Um singleton, so que com escopo de sessão, não aplicação

4 respostas
A

Galera,

Preciso colocar uma classe na sessao na camada de apresentação (Action) e recuperar essa classe na camada negocio. Não quero ficar passando um monte de parametros.

 É mais ou menos como se fosse um [i]singleton[/i]. Vou chamá-la de WebUtil

MinhaAction.java

... WebUtil.getInstance().setUsuario(user); ...

MeuBO.java

... Usuario user = WebUtil.getInstace().getUsuario(); ...

Deu pra entender? Só que não pode ser um singleton porque seu escopo é de aplicação e preciso de um que funcione no escopo de sessão!

Valeu e abcs.

4 Respostas

Fernando_Generoso_da

Dá uma olhada na ThreadLocal:

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ThreadLocal.html

att

Fernando Rosa

A

É um servidor compartilhado por diversas aplicações, e por diretrizes de segurança da empresa, não podemos manipular threads" :frowning:

dev.rafael

Apenas crie um bean de Sessão. Singletons, como vc quer, não podem estar no escopo de sessão porque atributos de classe
são compartilhados através de toda JVM.

De qualquer forma vc está fazendo alguma coisa errada ai, vc “nunca” deveria acessar um componente da camada de
apresentação na camada de negócios. Se vc precisa que o seu componente MeuBO acesse alguma informação presente no seu
MinhaAction, apenas passe ela por parâmetro, esse é o modo correto. Agora se vc quer que o seu MeuBO chame algum método
de MinhaAction, use um valor de retorno do método de MeuBO para que MinhaAction saiba o que tem que ser feito após a
execução dessa lógica específica.

A

Na verdade não estou atravessando as camadas. Quero obter da sessão um valor que foi inputado no momento que a Action foi executada.

Mais especificamente, o eu tenho que fazer é: cara se loga na aplicação, eu pego as informações dele e coloco na sessão. Quando um registro for inserido/alterado, vou colocar no banco também o usuario de alteração.

O problema é que não quero ficar passando a classe usuário como parametro nos metodos de Service, BO e DAO.

Por isso citei o singleton, mas não posso utilizar justamente pelo motivo apontado por você. Ele é compartilhado por toda JVM.

Não estou usando EJB, seesion beans não vao rolar!

Criado 30 de agosto de 2010
Ultima resposta 30 de ago. de 2010
Respostas 4
Participantes 3