HttpFilter no JBossWS para Web Services

Olá Pessoal,

Seguinte, estou desenvolvendo um web services em ejb3 usando o modelo de annotations, etc e pra deployar estou usando o jboss 4.2.0 que tem suporte pra ejb3 e dentro dele tem um projeto jbossws que eh responsável por controlar os web services. Esta arquitetura está funcionando sem problemas.

O que estou querendo fazer agora é adicionar um filter nas requisições do web services para que a cada requisição eu pegue as informações que estão vindo na request e possa montar o meu contexto(IP da máquina q estah acessando, etc…).

Para aplicações web eu sei que esse filter funciona sem problemas, basta adicionar no arquivo web.xml da aplicação as tags e , porém para web services não está funcionando direito, pois o arquivo web.xml que eu axei para o ws fik no caminho do jboss “deploy\jbossws.sar\jbossws-context.war\WEB-INF” e ao adicionar as tags e elas não funcionam para as aplicações Client que consomem o WS, funcionam somente quando eu acesso via URL o jbossws (http://localhost:8080/jbossws/)

Voces tem alguma idéia sobre isso?

Valewww!!!

Leonardo Nickel

Até onde eu sei você não precisaria criar filtro, bastaria usar o WebServiceContext que é recebido por injeção, exemplo:

@Stateless
@WebService
public class Teste {
	
	@Resource WebServiceContext wsCtx;
	
	@WebMethod(operationName="echo")
	public String echo(@WebParam(name="str") String str) {
		MessageContext mc = wsCtx.getMessageContext();
		HttpServletRequest req = (HttpServletRequest) mc.get(MessageContext.SERVLET_REQUEST);

		return str;
	}

}

A implementação é bem simples, pois a partir do HttpServletRequest você consegue capturar as informações que precisa. O MessageContext.get() permite capturar outros objetos.
O GRANDE problema é que o Jboss 4.2.x não implementa JEE 5.0 completamente assim a injeção do WebServiceContext fica sempre null, eu testei no Jboss 5.0.Beta2 e ele injeta corretamente.

Espero ter ajudado um pouco.

Testei a injeção no Jboss 4.2.2 e funcionou corretamente