Vraptor 3, Servlet 3 e ajax reverso

7 respostas
thiago.magro

Galera, alguém ai usa ou ja tentou usar servlet com AsyncContext pra manter a requisição do cliente aberta?
Estou tentando usar com o VRaptor 3 e tomando o erro abaixo:

java.lang.IllegalStateException: Request is within the scope of a filter or servlet that does not support asynchronous operations

Bem na linha que pego o request e dou um startAsync():
AsyncContext ac = request.startAsync();

Será q o filtro do Vraptor esta interceptando a chamada dessa servlet?

Obrigado desde ja.

Thiago

7 Respostas

Lucas_Cavalcanti

o filtro do VRaptor intercepta todas as requisições, por padrão =/…

não lembro se em servlet 3 dá pra excluir urls, mas vc poderia excluir a url da sua servlet assincrona…

senão a gente pode tentar ver se é possível converter o filtro do vraptor pra suportar requests
assíncronos…

[]'s

G

Não, não dá. Creio que uma opção seja talvez criar um filter filho do filter do vraptor que ao invés de interceptar esse servlet faça o deferer para o container. Ou então criar no vraptor algum parametro que diga as URIs que serão ignoradas pelo vraptor, fazendo assim o deferer.

Aliás achei que no EE6 iriam melhorar aqueles URI-patterns, que só funciona /, /path/ e *.foo.

Lucas_Cavalcanti

o problema é que não pode ter lógica dentro do filtro do VRaptor… ele simplesmente NÃO pode ser executado, senão o request assíncrono não funciona…

acho que vai precisar criar um filtro do VRaptor compatível com async

Fernando_H_Gomes

Pessoal gostaria de saber como ficou isto, estou pesquisando sobre ajax reverso e isso me interessa muito.

Lucas_Cavalcanti

não chegamos a evoluir isso ainda, pq precisamos de casos de teste, e de um jeito fácil de trocar as implementações…

precisa ver se temos que fazer o VRaptor interceptar todas as requests assincronamente ou só algumas determinadas…

se puder abrir uma issue pra isso, por favor:

G

Eu estive semana passada analisando uma forma de integrar JEE6 sem perder a compatibilidade com JEE5. A interface HttpServletRequest possui novos métodos no Servlet 3 que não possuem no Servlet 2.5. Assim será necessário fazer uma alteração para que possamos ter duas implementações sem quebrar nada para containers no Servlet 2.5.

Fernando_H_Gomes

Lucas, vou estudar mais e fazer alguns testes. Ainda estou com conhecimento muito superficial.
Assim que eu me aprofundar eu abro a issue.
Vlw.

Criado 6 de abril de 2010
Ultima resposta 13 de jul. de 2010
Respostas 7
Participantes 4