Dúvida Jersey

1 resposta
Z

Galera, fiz uma modificação em meu Bean para realizar o mapeamento do Jersey.
Fiz seguindo um tutorial que achei (O exemplo do tutorial consegui rodar aqui), mas não obtive sucesso.

Ao tentar acessar o endereço http://localhost:8080/menuDroidWeb/produtoresource
tenho o seguinte retorno

type Status report
message /menuDroidWeb/produtoresource
description The requested resource (/menuDroidWeb/produtoresource) is not available.

ProdutoBean.java

package br.com.unip.menudroidweb.bean;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import br.com.unip.menudroidweb.facade.ProdutoFacade;
import br.com.unip.menudroidweb.model.Produto;

@ViewScoped
@ManagedBean (name = "produtoBean")
@Path("/produtoresource")
public class ProdutoBean extends AbstractBean implements Serializable {
	private static final long serialVersionUID = -3644787609339087086L;
	
	private Produto produto;
	private List<Produto> produtoLista;
	private ProdutoFacade produtoFacade;

	public ProdutoFacade getProdutoFacade() {
		if (produtoFacade == null) {
			produtoFacade = new ProdutoFacade();
		}

		return produtoFacade;
	}

	public Produto getProduto() {
		if (produto == null) {
			produto = new Produto();
		}

		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public void createProduto() {
		try {
			getProdutoFacade().createProduto(produto);
			closeDialog();
			displayInfoMessageToUser("Registro criado com sucesso!");
			loadProduto();
			resetProduto();
		} catch (Exception e) {
			keepDialogOpen();
			displayErrorMessageToUser("Ocorreu um erro na transação! Tente novamente.");
			e.printStackTrace();
		}
	}
	
	public void updateProduto() {
		try {
			getProdutoFacade().updateProduto(produto);
			closeDialog();
			displayInfoMessageToUser("Registro alterado com sucesso!");
			loadProduto();
			resetProduto();
		} catch (Exception e) {
			keepDialogOpen();
			displayErrorMessageToUser("Ocorreu um erro na transação! Tente novamente.");
			e.printStackTrace();
		}
	}
	
	public void deleteProduto() {
		try {
			getProdutoFacade().deleteProduto(produto);
			closeDialog();
			displayInfoMessageToUser("Registro excluído com sucesso!");
			loadProduto();
			resetProduto();
		} catch (Exception e) {
			keepDialogOpen();
			displayErrorMessageToUser("Ocorreu um erro na transação! Tente novamente.");
			e.printStackTrace();
		}
	}

	@GET
	@Produces("text/xml")
	public List<Produto> getAllProduto() {
		if (produtoLista == null) {
			loadProduto();
		}

		return produtoLista;
	}

	private void loadProduto() {
		produtoLista = getProdutoFacade().listAll();
	}

	public void resetProduto() {
		produto = new Produto();
	}
}

Alguém saberia me dizer o que estou fazendo de errado?
Agradeço desde já!

1 Resposta

Z

Opa, achei o erro, esqueci de mapear o Jersey no web.xml.
Agora ele conseguiu executar o método getAll, contudo não exibiu o xml e me deu o seguinte retorno de erro no console

Hibernate: 
    select
        produto0_.idProduto as idProduto4_,
        produto0_.descricao as descricao4_,
        produto0_.observacaoCardapio as observac3_4_,
        produto0_.precoCusto as precoCusto4_,
        produto0_.precoVenda as precoVenda4_ 
    from
        menuDroid.produto produto0_
Set 15, 2012 6:11:28 PM com.sun.jersey.spi.container.ContainerResponse write
Grave: A message body writer for Java class java.util.ArrayList, and Java type java.util.List<br.com.unip.menudroidweb.model.Produto>, and MIME media type text/xml was not found
Set 15, 2012 6:11:28 PM com.sun.jersey.spi.container.ContainerResponse write
Grave: The registered message body writers compatible with the MIME media type are:
text/xml ->
  com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$Text
  com.sun.jersey.core.impl.provider.entity.DocumentProvider
  com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter
  com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$Text
  com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$Text
*/* ->
  com.sun.jersey.core.impl.provider.entity.FormProvider
  com.sun.jersey.core.impl.provider.entity.StringProvider
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.ReaderProvider
  com.sun.jersey.core.impl.provider.entity.DocumentProvider
  com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider
  com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter
  com.sun.jersey.server.impl.template.ViewableMessageBodyWriter
  com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
  com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
  com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General

Set 15, 2012 6:11:28 PM com.sun.jersey.spi.container.ContainerResponse logException
Grave: Mapped exception to response: 500 (Internal Server Error)
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.ArrayList, and Java type java.util.List<br.com.unip.menudroidweb.model.Produto>, and MIME media type text/xml was not found
	at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:285)
	at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1448)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.ArrayList, and Java type java.util.List<br.com.unip.menudroidweb.model.Produto>, and MIME media type text/xml was not found
	... 24 more

Alguém saberia o porque disso?

Criado 15 de setembro de 2012
Ultima resposta 15 de set. de 2012
Respostas 1
Participantes 1