JBoss 5.1 + VRaptor 3.1.3

tira o filtro do VRaptor, e crie um Filter que só imprime o request e o response, as classes deles e o resultado do instanceof…

às vezes vc subiu o jboss com alguma configuração que não usa httpServlet

se o instanceof retorna falso elas não implementam HttpServletRequest e Response, simples assim.

concordo que na API do tomcat 6 oficial essas classes implementam os HSRs, mas e no tomcat dentro do jboss?
será que é a mesma versão?

no debug do eclipse, use a view Display, e digite isso (com breakpoint no if problemático):

//selecione cada linha separadamente e aperte Ctrl+D pro eclipse executar
req.getClass();

req.getClass().getInterfaces();

o que ele retorna?

então ou o seu java não sabe fazer instanceof ou o tomcat que vc está usando é modificado :wink:

faz aquelas linhas de debug que eu te pedi, por favor, e posta aqui pra eu ter uma idéia melhor do que está acontecendo

Oi Seu fagner

Simplesmente um bug incrivel. O jboss nao esta passando um httpservletrequest/response? Faz algum sentido?

Teria como voce testar nos ultimos betas do 6? Alguma coisa esta muito errada.
paulo

é como se o servlet-api.jar tivesse uma interface diferente da que o tomcat usou na implementação.
podia tentar substituir esse arquivo de interfaces pelo que tomcat usa, pra ver se funciona.

Fala galera.

Estou com o mesmo problema…
Alguem solucionou!?

Valeu.

vc tá com a última versão do VRaptor? 3.3.1?

Descobri, conflito da api servlet-api que estava no meu projeto removi do build e ta tudo lindo!

Ola

Quando faço o deploy de um WAR no JBoss 5.1 recebo o seguinte erro:

Andei olhando o fonte do VRaptor, mais exatamente a o filtro (br.com.caelum.vraptor.VRaptor ) e ele tem o seguinte código:

[code] public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,
ServletException {

    if (!(req instanceof HttpServletRequest) || !(res instanceof HttpServletResponse)) {
        throw new ServletException(
                "VRaptor must be run inside a Servlet environment. Portlets and others aren't supported.");
    }[/code]

O connector do Tomcat 6, embedded no JBoss 5.1, utiliza as classes org.apache.catalina.connector.RequestFacade e org.apache.catalina.connector.ResponseFacade, estas que implementam, de qualquer maneira, HttpServletRequest. Estranho o instanceof não funcionar.

Alguma idéia?

Lucas

Eu verifiquei isso debugando já. As classes que ele utiliza são essas que citei no primeiro post da thread, mais exatamente org.apache.catalina.connector.RequestFacade e org.apache.catalina.connector.ResponseFacade

Verifiquei na API do Tomcat 6 que ambas implementam HttpServletRequest, HttpServletResponse, porém o instanceof retorna false. (???)

Eu estou usando a configuration web do JBoss, ela me atende já.

Bem, vou investigar aqui, não existe mágica. rs

Tks!

Referência:

http://docs.jboss.org/jbossas/docs/Installation_And_Getting_Started_Guide/5/html/The_JBoss_Server___A_Quick_Tour.html

http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/connector/RequestFacade.html
http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/connector/ResponseFacade.html

Obs: O JBossAS utiliza o JBoss Web, este que, por sua vez, é baseado no Tomcat .

[code]public void doFilter(ServletRequest req, ServletResponse res,
		FilterChain chain) throws IOException, ServletException {

	logger.debug("request : " + req.getClass().getName());
	logger.debug("response : " + res.getClass().getName());

	logger.debug("instanceof request => "
			+ (req instanceof HttpServletRequest));
	logger.debug("instanceof response => "
			+ (res instanceof HttpServletResponse));

}[/code]

req.getClass().getInterfaces() >> [interface javax.servlet.http.HttpServletRequest]
res.getClass().getInterfaces() >> [interface javax.servlet.http.HttpServletResponse]

Acredita que no instanceof retorna false? rs

@bobmoe

Não creio. Estas interfaces fazem parte da especificação.

@Paulo

Justamente por isso eu achei muito estranho, não faz sentido algum. Acredito que eles não cometeriam nem deixariam passar algo tão bobo assim.

Estou tentando rodar no JBoss6 RC1, mas estou levando cano por enquanto.