SessionContext

10 respostas
D

Qual seria a função de um SessionContext?? , pois sei que Session HTTP serve para armazenar informações enquanto o usuário esteja no site.

10 Respostas

L

Ta na API explicando: http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/ejb/SessionContext.html

D

Ok, obrigado leandroqbs, porem estou precisando guardar um objeto Stateful na SessionContext e nao estou sabendo como, pois depois irei interceptar um método e precisava desse objeto que foi guardado na session, como faço isso ?

L

Cara, me explica o que vc quer exatamente. É no ejb mesmo? ou no projeto web que vc ta querendo fazer isso? É sessioncontext mesmo ou é httpsession?

D

leandro é EJB e sessionContext, o que eu quero é o seguinte: qdo eu logar no sistema eu qro guardar um objeto Stateful que é o Usuario logado na Session Context e depois quando for executar um método de salvar da app, eu vou interceptar o método e verifica se o usuário tem a permissão de executar.

M

Se o seu EJB é Statefull vc não precisa quardar o usuário na sessão. Basta vc ter uma instância do Usuário dentro do seu EJB Statefull e ele vai existir enquanto durar a sessão daquele usuário com o contexto da aplicação.
Lembre do exemplo clássico do Carrinho de Compras. :slight_smile:

L

Vc precisa ter um SessionBean Statefull para fazer o que quer… Pensa no carrinho de compras que o amigo falou: Vc põe um livro no seu carrinho de compras em um e-commerce qualquer, o sistema coloca um flag de -1 um produto no estoque enquanto sua sessão estiver ativa… é aí que entra o seu SessionBean Statefull, nele vc mantém o estado dos objetos no qual está trabalhando…

F

Olá,
Estou com um problema parecido… faço o mesmo, porém quando dou um lookup no SessionBean Statefull ele me retorna uma nova instancia.
Consigo fazer o lookup pegar o mesmo Statefull ?

A

kfazolin:
Olá,
Estou com um problema parecido… faço o mesmo, porém quando dou um lookup no SessionBean Statefull ele me retorna uma nova instancia.
Consigo fazer o lookup pegar o mesmo Statefull ?

Acho que Stateful é 1 por cliente.

F

Mas fora do container, toda vez que faço um lookup ele me retorna uma nova instância.

G

Stateful na verdade significa que há uma única instância por cliente. Ou seja, você faz o lookup uma única vez e usa o bean a vontade podendo usar atributos de classe, pois o bean é todo seu. Porém cada vez que você faz um lookup você recebe uma nova instância.

Stateless é quando você recebe uma instancia compartilhada. Ou seja, você não pode usar atributo de classe porque esse seu EJB é compartilhado. A cada lookup você recebe uma instância compartilhada.

Não invente moda, EJB stateful não é para isso. Para saber qual usuário está autenticado e se ele possui permissão use JAAS. Conforme a spec, JAAS que é responsável pelo controle de autenticação e autorização. Via SessionContext.getCallerPrincipal você recebe o usuário. SessionContext.isCallerInRole você sabe se o usuário pertence a tal role.

Criado 2 de junho de 2009
Ultima resposta 23 de mai. de 2010
Respostas 10
Participantes 6