Jersey/JAXB: XML-Ausgaben bleiben (fast) leer

DeRal

Grünschnabel
Hi,
ich versuche gerade, zwei Komponenten meines Programms mittels REST (verwende dazu Jersey) kommunizieren zu lassen. Mittlerweile kann ich den Server auch schon ansprechen.
Wenn ich eine "Klasse" übertragen will (soll sich ja angeblich selbst in XML verpacken, wenn man @XmlRootElement einfügt) , bekomme ich aber Probleme: Es kommt nur ein " <?xml version="1.0" encoding="UTF-8" standalone="yes"?><userTicket/> " an.
Der Code, den ich verwende sieht so aus:
Code:
// Fragt beim Server an
public class RemoteAuth {
	private static void test(){
		WebResource service = Client.create().resource( "http://localhost:8080/auth" );
		System.out.println(service.path("login").path("user").path("admin").path("pass").path("login").accept(
				MediaType.APPLICATION_XML).get(String.class));
	}
	
	public static void main(String[] args) {
		test();
	}
}
Code:
// Die Resource
@Path("login")
public class RightsManagement {
	@GET
	@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
	@Path("user/{user}/pass/{pass}")
	public UserTicket message(@PathParam("user") String user, @PathParam("pass") String pass){
		if(user.equals("admin") && pass.equals("login")){
			UserTicket ticket = new UserTicket(user, pass);
			return ticket;
		} else if(user.equals("eltern") && pass.equals("login2")) {
			UserTicket ticket = new UserTicket(user, pass);
			return ticket;
		} else {
			return new UserTicket();
		}
	}
}
Code:
// Die Klasse, die verpackt und verschickt werden soll
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class UserTicket{
	private String group;
	private String user;
	private String password;
	
	public UserTicket(String user, String password) {
		this.user = user;
		this.password = password;
		if(user.equals("admin")){
			this.group = "admin";
		} else {
			this.group = "eltern";
		}
	}
	
	public UserTicket() {
		this.user = null;
		this.password = null;
		this.group = null;
	}
	// .... getter, setter, toString....
Code:
// Der "Server" ^^
	public static void main(String[] args) {
		HttpServer server;
		try {
			server = HttpServerFactory.create("http://localhost:8080/auth");
			server.start();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
Ist da noch irgendwas falsch?

Da fällt mir nebenbei noch ein: Wie kann ich das später wieder als UserTicket entgegennehmen? Im Moment wird ja nur der String ausgegeben.
 

DeRal

Grünschnabel
Ok... ich hab eine Lösung gefunden. Ich habe vor jeder Variable in UserTicket @XmlElement eingefügt. Aber angeblich soll das ja auch von selbst gehen, das verwirrt mich noch.