Injeção dependencia

28/01/2013

1

Bom dia Pessoal!

Estou com um problema muito estranho e ao mesmo tempo muito serio. Tem uma aplicação java web que utiliza jsf + primefaces + hibernate e spring, a um tempo venho percebi algo muito estranho, quando dois usuários ou mais acessão o sistema o mesmo se comporta como se os usuários estivessem na mesma sessão exemplo:
O usuário A e B estão logados criando um pedido de compra, esse pedido de compra contem uma lista de itens, quando o usuário A adiciona itens na sua lista os mesmos itens são exibidos na tela do usuário b.

O estranho e que o MangeBean estão com os annotation : @ManagedBean, @Controller e @RequestScoped

Na mesma classe eu utilizo o @Inject do pacote import javax.inject.Inject; para acessar as classes refrente a outra camada exemplo:

@ManagedBean
@Controller
@RequestScoped
public class PedidoDeCompraControle{
@Inject
private PedidoDeCompraService pedidoDeCompraService;
.
.
.

Realizei um teste debugando, através do eclipse, com dois usuários acessando ao mesmo tempo e percebi que os objetos instanciados pela aplicação contem o mesmo “id” ou seja ele ta criando um único objeto para todos os usuários.
Alguém tem alguma ideia de como eu posso consertar isso?
Desde já agradeço.
Responder

Posts

29/01/2013

Davi Costa

Já ouviu falar em Spring-Security. Vc nõ é obrigado a ter o Spring na sua aplicação é um módulo de segurança já pronto testado e pode ser usado em qualquer aplicação web

att Davi
Responder
no caso eu utilizo o spring nos annotations @Transactional e @Transactional(readlony = true) no metodos de consulta e persistencia, no caso a minha aplicação esta criando o objetos injetados no padrão singleton.
Responder

29/01/2013

Davi Costa

vc conferiu se o logar está settando o usuário?

att Davi
Responder

29/01/2013

Davi Costa

Complementando, vc já está usando spring que tal usar spring-security que já é uma implemntação pronta/testada/homologada/confiável e te dará mais recursos. O melhor é muito simples com vários tutoriais na rede em menos de uma hr vc coloca no seu projeto

att Davi
Responder
Verifiquei a parte de usuário e esta tudo ok, infelizmente não posso mudar o projeto apenas estou continuando o mesmo, como havia dito anteriormente realizei um debub com dou susarios ao mesmo tempo e verifiquei que o objeto que foi injetado esta como singleton.
Responder

29/01/2013

Wisley Souza

Usa CustomRealm...

Mostra sua configuração de spring e context ai...
Responder

30/01/2013

Davi Costa

Se usou singleton só tem um usuário por aplicação (caso tenha setado o usuário em uma classe singleton), vc deve guardar o usuário numa session

att Davi
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira