| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2011 17:17:17
|
boneazul
Java Ninja
![[Avatar]](/images/avatar/16e289983cce14eda9b2ade90076c44d.jpg)
Membro desde: 29/10/2007 17:13:59
Mensagens: 284
Offline
|
Olá pessoal não sei se isso é um bug do vraptor no GAE ou algo similar .
Estou utilizando um controller que popula no construtor um atributo que é um objeto da sessão ;
quando o método utiliza um forward ou redirect ele lança a exception abaixo :
--
Eu resolvi de um modo menos elegante que é em cada começo de método receber da sessao o objeto , ai funcionou :
Seria isso um bug , ou realmente não posso popular direto no construtor um objeto de session ??
This message was edited 1 time. Last update was at 14/06/2011 17:18:05
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2011 18:22:28
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
no gae o VRaptor instancia o controller passando tudo null no construtor, pra conseguir fazer os proxies (que permitem vc fazer os redirects e os forwards bonitinhos)
só fazer um if (session != null) no construtor
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2011 21:42:07
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Melhor ainda é usar o SessionScoped ao invés de trabalhar Httpcom Session.getAttribute e HttpSession.setAttribute.
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2011 21:49:23
|
boneazul
Java Ninja
![[Avatar]](/images/avatar/16e289983cce14eda9b2ade90076c44d.jpg)
Membro desde: 29/10/2007 17:13:59
Mensagens: 284
Offline
|
garcia-jj wrote:Melhor ainda é usar o SessionScoped ao invés de trabalhar Httpcom Session.getAttribute e HttpSession.setAttribute.
Bom a proposta do Lucas funcionou testando o if(session!=null) .
Então só que não consegui fazer rolar nem a pau no GAE utilizando um componente que encapsula HttpSession , ele fica lançando uma exceção de tudo que eu tentava guardar que não tinha serializado mesmo sendo serializado e ficava perdendo a sessão o tempo todo .
Se quiser fazer um teste . Crie um componente sessionScoped no GAE e tente colocar objetos dentro dele...ele fica perdendo a sessao e fica lançando uma exceção de NotSerializable no componente ... e usando direto de HttpSession tudo funcionava certinho!!
This message was edited 1 time. Last update was at 14/06/2011 21:52:16
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2011 23:30:44
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
colocar implements Serializable no componente não resolve?
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/06/2011 23:48:29
|
boneazul
Java Ninja
![[Avatar]](/images/avatar/16e289983cce14eda9b2ade90076c44d.jpg)
Membro desde: 29/10/2007 17:13:59
Mensagens: 284
Offline
|
Lucas Cavalcanti wrote:colocar implements Serializable no componente não resolve?
Então mesmo implementando a interface Serializable no componente ele passava o problema pra frente ai dava algo em algum componente que não lembro no Jetty que caia no NotSerializable tb ....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2011 00:14:10
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
qual container vc tá usando? no guice ou spring o Serializable vai funcionar, no pico não
This message was edited 1 time. Last update was at 15/06/2011 00:14:29
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2011 01:03:48
|
boneazul
Java Ninja
![[Avatar]](/images/avatar/16e289983cce14eda9b2ade90076c44d.jpg)
Membro desde: 29/10/2007 17:13:59
Mensagens: 284
Offline
|
Lucas Cavalcanti wrote:qual container vc tá usando?
no guice ou spring o Serializable vai funcionar, no pico não
Estou usando o spring mesmo !! Mas pelo que me lembro mesmo com o spring acontecia o problema . Se tiver afim faz o teste ai ...pega o blank project do gae , cria um componente sessionScoped e coloca uma entidade usuario dentro dele .. depois vai no log de ERROR do console do GAE voce vai ver o erro!!
This message was edited 1 time. Last update was at 15/06/2011 01:05:32
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2011 09:36:14
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
ah tá, tá dando erro pq o Usuário não é serializable...
qdo ele tenta serializar o seu wrapper ele serializa os campos deles tb, ou seja, o Usuario.
Tenta deixar ele como serializable tb
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2011 16:27:07
|
boneazul
Java Ninja
![[Avatar]](/images/avatar/16e289983cce14eda9b2ade90076c44d.jpg)
Membro desde: 29/10/2007 17:13:59
Mensagens: 284
Offline
|
Lucas Cavalcanti wrote:ah tá, tá dando erro pq o Usuário não é serializable...
qdo ele tenta serializar o seu wrapper ele serializa os campos deles tb, ou seja, o Usuario.
Tenta deixar ele como serializable tb
Mesmo implementando Serializable em Usuario por exemplo ai o erro começa a aparecer no componente exemplo : WebSession dai mesmo implementando Serializable no componente de sessão ai começa a dar um erro no componente interno no jetty que tb não é Serializable... ou seja
mesmo implementando
ele continua lançando a warning num componente interno do jetty...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2011 21:53:39
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
se vc fizer ao invés de @SessionScoped um session.setAttribute("webSession", new WebSession()) e colocar o usuário dentro dele, funciona?
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2011 22:20:14
|
boneazul
Java Ninja
![[Avatar]](/images/avatar/16e289983cce14eda9b2ade90076c44d.jpg)
Membro desde: 29/10/2007 17:13:59
Mensagens: 284
Offline
|
Lucas Cavalcanti wrote:se vc fizer ao invés de @SessionScoped um session.setAttribute("webSession", new WebSession()) e colocar o usuário dentro dele, funciona?
Desse modo num testei ainda , mais ai acho que só iria complicar as coisas , usar a interface session pra colocar um componente que supostamente seria session tb mas sem anotação,
meio confuso de pensar isso..
Vo deixar como está por enquanto mesmo ja que usando session direto não apresenta problemas , so serializando as classes que vão pra sessão ja funciona tudo bonitinho...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/06/2011 22:32:36
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
você pode criar o WebSession como @RequestScoped, e internamente o get e set usuário usam a session para guardá-lo
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
|
|