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???
grato
Pensei num negócio aqui mas é um chute…
Será que num desses processos que ficam rodando aí… nao deu timeout na conexao com o banco??
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!!
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
Como vc está usando a persistência? pelo spring? fecha as sessions no braço? e o controle de transação?..
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
Onde vc cria a Thread? Na view ou no server?
A view é em swing?
A thread é criada no server mesmo… não é na visão…
mas em todo caso eu uso jsf
vlw
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.
isso usa o HibernateTransactionManager!!
vc tem alguma sugestão ??