Could not initialize proxy

9 respostas
E

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

9 Respostas

rogelgarcia

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??

E

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

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

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.

E

isso usa o HibernateTransactionManager!!

vc tem alguma sugestão ??

Criado 15 de março de 2010
Ultima resposta 15 de mar. de 2010
Respostas 9
Participantes 3