Suponha que você tenha uma classe anotada JAX-B e deseja retornar objetos dessa classe em um de seus serviços JAX-RS, mas o resultado é sempre igual ao de uma toString()
chamada nesse objeto. Por exemplo, com.domain.MyClass@1796224
é retornado, se você não substituiu toString()
. O problema provavelmente será que seu método JAX-RS é anotado com em @Produces("text/plain")
vez de @Produces("application/json")
, o que faz sua implementação JAX-RS inteligente pensar que é mais apropriado retornar uma representação simples de String de seu objeto. Aqui está um pequeno exemplo:
MyClass.java:
@XmlRootElement
public class MyClass {
@XmlElement
private String message;
public MyClass(String message) { this.message = message; }
}
Método de serviço JAX-RS:
@GET
@Path("/rest/get/message")
@Produces("application/json")
public MyClass getMessage() {
return new MyClass("Hello world!");
}