[Resolvido] Dúvida usando @SessionScoped no VRaptor 3 com Tomcat 7  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

E aí galera!

Estou construindo uma app pra testes, usando o VRaptor. O esquema é o seguinte: tenho um objeto que é anotado com SessionScoped e Component. Simples assim, certo?

Pois bem, até ontem próximo do meio dia, não conseguia fazer funcionar com o Pico. O objeto não fica preso na sessão, nem com reza braba! Tentei reiniciar a máquina, reinstalar o Tomcat, dezipar o Eclipse, re-configurar o build path. Testei tudo o que pude. Quando comecei a escrever um e-mail pra alguem da equipe de desenvolvimento do VRaptor achando que era algum bug em relação ao Pico, pensei em trocar pro Google Guice. Bingo! Funcionou.

Código vai, código vem e cheguei num ponto que tive que fazer novamente um objeto SessionScoped e Component. Nesse momento eu estava usando Google Guice. O problema ocorreu novamente! O objeto simplesmente não fica na sessão (por um momento achei que o objeto que falei anteriormente, ao mudar do Pico pro Guice, também não estava. Testando com o outro objeto, ele estava! Ou seja, um objeto fica na sessão e o outro não).

Por isso, minha dúvida: existe alguma forma de logar, a cada request, os objetos que estão na sessão? Usando um filter, por exemplo, pra todas as urls, eu poderia pegar esses objetos que estão na sessão X (SessionScoped, ApplicationScoped, seja lá qual for) e mostrar no console mesmo, só por fins de debug. Existe alguma forma de fazer isso?

Existe alguma relação com poder ficar no cache do servidor / navegador? Mesmo eu reiniciando a máquina e trocando de browser?

E, só pra aproveitar o tópico: alguém mais teve algum problema parecido? Estou usando Eclipse 6, Firefox 4, Ubuntu 11.04, VRaptor (última versão), MySQL 5 e Tomcat 7. Me recomendam mudar de Tomcat pra Jetty?

Abraço!

This message was edited 5 times. Last update was at 02/06/2011 14:24:04


Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

vc pode imprimir os atributos da HttpSession... todos os objetos sessionScoped tem que estar lah (isso vale pra Guice e Spring só)


--
Caelum
www.caelum.com.br

Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

ah, imprima tb o session.getId(), pra saber se vc tá lidando com a mesma sessão

--
Caelum
www.caelum.com.br

Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

Valeu Lucas! Vou testar isso amanhã a noite.

[Editado daqui pra baixo]
Aliás, Lucas, de onde pego o session? Se eu estiver dentro de uma classe filter, eu consigo?

[Editado]
Acho que entendi. Devo usar o HttpSession que será injetado na Filter, certo?

This message was edited 2 times. Last update was at 31/05/2011 12:11:31


Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

se vc usar um Interceptor do VRaptor ao inves de um Filter vc pode receber a HttpSession no construtor

--
Caelum
www.caelum.com.br

Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

Lucas, ficou perfeito. Código a seguir, se algum dia alguém precisar disso:

Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

Lucas, você sabe me dizer se perco muita performance interceptando todas as requisições? Esse sistema que estou fazendo é pequeno, 3, 4 máquinas acessando. Acho que não deve passar de 100 mil requests por dia.

Mas e num sistema com, sei lá, 1 milhão de requests por dia? A dupla Tomcat7/VRaptor aguenta o tranco?

Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

depende mto do que vc faz no interceptor...

se o interceptor faz operações rápidas/constantes não impacta mto na performance...

só cuidado que gerar toString de objetos pode ser custoso, então imprimir todos os objetos que estão na sessão em todas as requisições pode ser caro

--
Caelum
www.caelum.com.br

Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

VRaptor+Tomcat 7 pode aguentar sim 1M request por dia, principalmente se estiver usando Guice ou Pico como container, se as transações estiverem sendo controladas corretamente, se o pool de conexões com o banco estiver configurado corretamente, se os parâmetros do servidor estiverem tunados corretamente

ou seja, dá pra fazer sim, só tem que usar as coisas certas

--
Caelum
www.caelum.com.br

 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team