Dúvida Request Dispatcher com JAX-RS

7 respostas
R

Boa tarde galera,

eu tenho uma classe exposta via REST e preciso quando chegar no metodo dar um request dispatcher,ou seja eu preciso simular o comportamento de um servlet quando recebe uma requisição.

Tentei injetar um HttpServletRequest usando @Resource mas não rolou.Ideias?

@Resource
	HttpServletRequest req;
	
	@GET
	@Path("{endereco}")
	@Produces( { MediaType.APPLICATION_XML })
	public void buscar(@PathParam("endereco")String endereco){
		this.endereco = endereco;
	
	}

7 Respostas

Alexandre_Saudate
raf4ever:
Boa tarde galera,

eu tenho uma classe exposta via REST e preciso quando chegar no metodo dar um request dispatcher,ou seja eu preciso simular o comportamento de um servlet quando recebe uma requisição.

Tentei injetar um HttpServletRequest usando @Resource mas não rolou.Ideias?

@Resource
	HttpServletRequest req;
	
	@GET
	@Path("{endereco}")
	@Produces( { MediaType.APPLICATION_XML })
	public void buscar(@PathParam("endereco")String endereco){
		this.endereco = endereco;
	
	}

Bom... vamos começar do começo:

1) Se você precisa de um comportamento de servlet, porque você não usa... um servlet?
2) Você não pode ter um GET e não retornar nada. Se te interessa, sei lá, somente os headers, é melhor usar HEAD.
3) Passar o HttpServletRequest como parâmetro pro método (e anotando esse parâmetro com @Resource) deveria funcionar. Na verdade, é até preferível, porque você fornece condições pro conteiner reutilizar a instância do serviço.

[]'s

R

Fala Alexandre,

não usei Servlet pois esse método vai ser exposto via REST e consumido por outra aplicação usando CommonsHttpClient

Alexandre_Saudate

raf4ever:
Alexandre Saudate:

  1. Se você precisa de um comportamento de servlet, porque você não usa… um servlet?

Fala Alexandre,

não usei Servlet pois esse método vai ser exposto via REST e consumido por outra aplicação usando CommonsHttpClient

Mesmo assim. REST é um estilo de programação que você pode fazer tranquilo usando só servlets e nada mais. Além disso o CommonsHttpClient consome tranquilamente os dados de servlets e até de outras coisas :wink:

R

Alexandre Saudate:
raf4ever:
Alexandre Saudate:

  1. Se você precisa de um comportamento de servlet, porque você não usa… um servlet?

Fala Alexandre,

não usei Servlet pois esse método vai ser exposto via REST e consumido por outra aplicação usando CommonsHttpClient

Mesmo assim. REST é um estilo de programação que você pode fazer tranquilo usando só servlets e nada mais. Além disso o CommonsHttpClient consome tranquilamente os dados de servlets e até de outras coisas ;)

Deixa eu ver se entendi.Então ficaria algo do tipo:

@GET
	@Path("{endereco}")
	@Produces( { MediaType.APPLICATION_XML })
public void service(HttpServletRequest req,HttpServlet Response){

}
Alexandre_Saudate

raf4ever:
Alexandre Saudate:
raf4ever:
Alexandre Saudate:

  1. Se você precisa de um comportamento de servlet, porque você não usa… um servlet?

Fala Alexandre,

não usei Servlet pois esse método vai ser exposto via REST e consumido por outra aplicação usando CommonsHttpClient

Mesmo assim. REST é um estilo de programação que você pode fazer tranquilo usando só servlets e nada mais. Além disso o CommonsHttpClient consome tranquilamente os dados de servlets e até de outras coisas ;)

Deixa eu ver se entendi.Então ficaria algo do tipo:

@GET
	@Path("{endereco}")
	@Produces( { MediaType.APPLICATION_XML })
public void service(HttpServletRequest req,HttpServlet Response){

}

Não. Ficaria algo assim:

@WebServlet (pattern="/")
public class MeuServlet extends HttpServlet {

   public void doGet (HttpServletRequest req, HttpServletResponse resp) {
   }
}
R

Meu Servlet Container é versão 2.1

Alexandre_Saudate

OK, sem @WebServlet, então. Mesmo assim, ainda me parece que o que você precisa mesmo é de um servlet, não de um recurso REST.

Criado 4 de dezembro de 2012
Ultima resposta 4 de dez. de 2012
Respostas 7
Participantes 2