Pessoal,
Estou com um problema que nao consigo resolver, vou tentar explicar:
Na minha máquina local roda sem problemas, quando vai para produção funciona, mas depois de um certo tempo começa a dar esse erro:could not initialize proxy no session
esse erro começou pq tinha um processo que o usuario clicava em um botão que demorava uns 5 minutos pra rodar… e o sistema ficava travado … até o fim do processo… então fizemos uma thread para fazer esse processo e deixar o sistema rodando para o usuario!!!
depois que fizemos a thread local mesmo … começou a dar esse erro … ai mudei uma classe que estava mapeada com um atributo “fetch = FetchType.LAZY”(estava dando erro neste atributo)… mudei para “fetch = FetchType.EAGER”… ai começou a funcionar localmente…
mas na hora que sobe para produção … depois de um certo tempo começa a dar o mesmo erro q dava antes “could not initialize proxy no session”
alguem sabe se tem um limite de threads que pode rodar?? ou se tem alguma configuração no web.xml… que tenho q fazer???
Será que num desses processos que ficam rodando aí… nao deu timeout na conexao com o banco??
E
edward.juniorr
cara eu acho q não … pq o erro fala que a sessão está fechada
erro could not initialize proxy - the owning Session was closed"… parece que chega uma hora a conexão fecha … algo assim
uso spring e hibernate !!
minha thred nao estava como “synchronized”, coloquei agora mas não sei se vai funcionar… tem umas 6 pessoas acessando este processo simuntaneamente!!
rogelgarcia
Pode ter dado timeout na session entao?!
Essa classe tem alguma referencia recursiva??
Tenta trocar ao invés de usar FETCH EAGER… volta pra FETCH LAZY… e na sua query faz
left outer join fetch classeA.classeB
Assim o hibernate vai trazer tudo na mesma query… e nao vai precisar fazer o fetch depois… vai inclusive melhorar a performance
fabiofalci
Como vc está usando a persistência? pelo spring? fecha as sessions no braço? e o controle de transação?..
E
edward.juniorr
Fabio quem controla as sessões é o Spring… mas receio que o erro está nesta configuração… não sei bem como funciona!!
rogelgarcia, está classe nao tem referencia recursiva!! então estava td como lazy… mas depois q foi feita a thread começou a dar pau… fui debugando e dava pau neste atributo q estava como lazy… o problema aconteceu por causa da thread
fabiofalci
Onde vc cria a Thread? Na view ou no server?
A view é em swing?
E
edward.juniorr
A thread é criada no server mesmo… não é na visão…
mas em todo caso eu uso jsf
vlw
fabiofalci
Vc usa hibernate, certo?
Usa o HibernateTransactionManager?
Se não me engano ele é thread-local, não sei como ele se comporta quando vc cria threads a partir da thread original.
Provavelmente quando a thread do teu request retorna pra view o spring tenta finalizar a session, mesmo que a outra thread esteja ativa.