EJB3 - Problemas com Stateful  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Olá,

Estou fazendo alguns teste com EJB aqui, fiz um sisteminha login, Possuo um SessionBean chamado LoginBean sendo este Stateful, que instancio no servlet de Login e faço o login normalmente. Após o Login vou chama-lo em outro servlet e o objeto Usuario que possuo no SessionBean está null, não sei porque, ele não deveria conter os dados de quando o login foi efetuado?

This message was edited 1 time. Last update was at 12/01/2009 12:59:59

[MSN] [ICQ]
Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

Depende.

Stateful Session Beans (SFSB) são são a mesma coisa que sessão da web.

O que deve ter acontecido com você é o seguinte: numa requisição você obteve a referência a um SFSB e o descartou, não armazenando na sessão da web. Na outra requisição, você pediu, de novo, um SFSB; e como é uma nova requisição, veio uma nova instância pra você. Você pode até usar um SFSB, mas deve armazenar a referência na sessão para poder utilizá-lo depois.

É claro, é só um chute meu. Pode ser que não seja isso.

Leonardo Veríssimo
-------------------------------------------------
Objectzilla
[WWW]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Hmmm estranho pois se necessito armazenar em uma sessão, então o uso de Stateful não teria sentido, pois posso guardar "qualquer coisa" na sessão, aí Stateful não haveria utilidade.
[MSN] [ICQ]
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

leoloko,

Uma coisa que pode estar acontecendo é que quando acontece o activate/passivate do Statefull, ele não deve estar Serializado, ou algum atributo dentro do SessionBean não está serializado

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Jair Rillo Junior wrote:leoloko,

Uma coisa que pode estar acontecendo é que quando acontece o activate/passivate do Statefull, ele não deve estar Serializado, ou algum atributo dentro do SessionBean não está serializado


Bom meus session beans implementam a classe Serializable, preciso fazer alguma coisa além disso?
[MSN] [ICQ]
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

leoloko wrote:Bom meus session beans implementam a classe Serializable, preciso fazer alguma coisa além disso?

Não o Session Bean, mas sim seu objeto Usuario.

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

E como eu resolvo esse problema?
[MSN] [ICQ]
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

se você tiver uma classe Usuario, adicione o implements Serializable nela., assim como em todos os outros atributos/objetos

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Então eu tenho a entidade Usuario, que já está implementando a classe Serializable.

Será que pode ser a forma que eu estou instanciando?

Atualmente eu faço isso



Outra coisa, tanto as entidades, quanto os sessionbean e os servlets implementam a Serializable.

Porem é obrigatorio ter akela variavel "serialVersionUID = 1L;" e isso influencia em alguma coisa?

This message was edited 8 times. Last update was at 12/01/2009 21:34:24

[MSN] [ICQ]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Então eu tenho a entidade Usuario, que já está implementando a classe Serializable.

Será que pode ser a forma que eu estou instanciando?

Atualmente eu faço isso



Outra coisa, tanto as entidades, quanto os sessionbean e os servlets implementam a Serializable.

Porem é obrigatorio ter akela variavel "serialVersionUID = 1L;" e isso influencia em alguma coisa?

This message was edited 2 times. Last update was at 12/01/2009 21:34:07

[MSN] [ICQ]
felipeguerra
GUJ Ranger

Membro desde: 26/03/2007 16:36:54
Mensagens: 984
Localização: São Paulo
Online

leoloko wrote:Olá,

Estou fazendo alguns teste com EJB aqui, fiz um sisteminha login, Possuo um SessionBean chamado LoginBean sendo este Stateful, que instancio no servlet de Login e faço o login normalmente. Após o Login vou chama-lo em outro servlet e o objeto Usuario que possuo no SessionBean está null, não sei porque, ele não deveria conter os dados de quando o login foi efetuado?

Posta o código ae!

"Antes da iluminação cortar lenha, carregar água. Depois da iluminação cortar lenha, carregar água..."
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Fiz um exemplo bem simples, e ocorre o mesmo problema...

UsuarioBean.java


UsuarioBeanLocal


Servlet1


Servlet2



Ao acessar o Servlet1, tudo funciona beleza... porém quando vou no Servlet2, acontece um java.lang.NullPointerException ao acessar o ubl.getNome();

Tá difícil a situação aqui... rsrsrs
[MSN] [ICQ]
jgbt
GUJ Master
[Avatar]

Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline

Se vc acessa:

e nome estiver nulo, tem que imprimir null, e não dar exception.
Provavelmente a variavel ubl deve estar nula, o que significa algum erro no lookup.

[]´s

João Bier
Desenvolvedor Java
[Email]
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

jgbt wrote:Se vc acessa:

e nome estiver nulo, tem que imprimir null, e não dar exception.
Provavelmente a variavel ubl deve estar nula, o que significa algum erro no lookup.

[]´s


Bom fiz o seguinte teste... alterei os servlets para dar um print aki:

Servlet1


Aqui ele exibe: 16:08:07,974 INFO [STDOUT] Servlet1 -> UsuarioBean:a5x2s26-5f85r2-fpwxrfn0-1-fpwxscxq-8

Servlet2


Aqui ele exibe: 16:08:20,776 INFO [STDOUT] Servlet2 -> UsuarioBean:a5x2s26-5f85r2-fpwxrfn0-1-fpwxsmu6-9

Logo na seguencia ele da um exception


Portanto aparentemente o objeto ubl está ok, sendo somente o atributo em null... já to ficando doido


This message was edited 1 time. Last update was at 13/01/2009 15:56:48

[MSN] [ICQ]
 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team