Dúvida Request Dispatcher com JAX-RS

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;
	
	}

[quote=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?

[code]

    @Resource
HttpServletRequest req;

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

}

[/code][/quote]

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

Fala Alexandre,

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

[quote=raf4ever][quote=Alexandre Saudate]

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

Fala Alexandre,

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

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:

[quote=Alexandre Saudate][quote=raf4ever][quote=Alexandre Saudate]

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

Fala Alexandre,

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

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 ;)[/quote]

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){

}

[quote=raf4ever][quote=Alexandre Saudate][quote=raf4ever][quote=Alexandre Saudate]

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

Fala Alexandre,

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

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 ;)[/quote]

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){

}

[/quote]

Não. Ficaria algo assim:


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

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

Meu Servlet Container é versão 2.1

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.