Injeção dependencia
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.
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.
Ismael Oliveira
Curtidas 0
Respostas
Davi Costa
28/01/2013
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
att Davi
GOSTEI 0
Ismael Oliveira
28/01/2013
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.
GOSTEI 0
Davi Costa
28/01/2013
vc conferiu se o logar está settando o usuário?
att Davi
att Davi
GOSTEI 0
Davi Costa
28/01/2013
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
att Davi
GOSTEI 0
Ismael Oliveira
28/01/2013
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.
GOSTEI 0
Wisley Souza
28/01/2013
Usa CustomRealm...
Mostra sua configuração de spring e context ai...
Mostra sua configuração de spring e context ai...
GOSTEI 0
Davi Costa
28/01/2013
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
att Davi
GOSTEI 0