Rest usando Jersey - problema com MIME media type

Olá pessoal,

Estou fazendo um helloword Rest utilizando as bibliotecas do Jersey e estou com um problema na hora de devolver os objetos para as requisições.
Bom, primeiramente, vou explicar meu cenário:

  • Eclipse 3.4
  • Tomcat 6.0
  • configuração do web.xml:
  <servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.ws.rest.config.feature.Redirect</param-name>
      <param-value>true</param-value>
    </init-param>
    <init-param>
      <param-name>com.sun.ws.rest.config.feature.ImplicitViewables</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
  • bibliotecas: activation.jar, asm-3.1.jar, jaxb-impl-2.1.12.jar, jersey-core-1.1.4.1.jar, jersey-json-1.1.4.1.jar, jersey-server-1.1.4.1.jar, jettison-1.1.jar, jsr311-api-1.1.1.jar, xstream-1.2.2.jar
  • bean:
public class Pessoa {

	private int id;
	private String nome;
	private int idade;
	
	public Pessoa(){}
	
	public Pessoa(int id, int idade, String nome) {
		super();
		this.id = id;
		this.idade = idade;
		this.nome = nome;
	}
	
	// GETS e SETS
	
}
  • resource:
@Path("pessoa")
@Consumes( { "text/xml", "application/json" })
@Produces( { "text/xml", "application/json" })
public class PessoaController {

	private PessoaService pessoaService = null;
	
	public PessoaController(){
		this.pessoaService = new PessoaService();		
	}
	
	@GET
	@Path("{idPessoa}")
	public Response buscarPessoa(@PathParam("idPessoa") Integer idPessoa){
		if(idPessoa != null){
			Pessoa pessoa = null;

			try {
				pessoa = this.pessoaService.buscarPeloId(idPessoa);
			} catch (IndiceException e) {
				e.printStackTrace();
			}
			
			if(pessoa != null){
				return Response.ok(pessoa).build();
			}
		
		} 
		return Response.status(HttpServletResponse.SC_NOT_FOUND).build();
	}
}

Faço a requisição para a url: http://localhost:8080/testRest/pessoa/1 o método de busca é acessado, trás o objeto pessoa do banco, mas na hora de realizar o Response retorna o seguinte erro:

SEVERE: A message body writer for Java type, class br.com.consist.solutions.rest.bean.Pessoa, and MIME media type, text/xml, was not found
16/12/2009 10:56:12 com.sun.jersey.server.impl.application.WebApplicationImpl onException
SEVERE: Internal server error
javax.ws.rs.WebApplicationException
	at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:253)
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:814)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:740)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:731)
	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:372)
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:452)
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:633)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)

Alguém já passou por isso? O que está faltando, configuração ou biblioteca?
Desde já obrigado pela atenção.

Cara, você está usando o java 1.5 ? não é necessario importar o jaxbimpl.jar visto que no java 1.6 isto já é nativo.,

Outra a sua classe pessoa não está anotada com as anotações do JAXB.

Hmmm… certo, estou usando o java 1.6.0_15.
Coloquei a anotação e funcionou! :smiley:

Obrigado pela força