| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2010 11:00:09
|
renanpto
JavaEvangelist
![[Avatar]](/images/avatar/35df583a06ef378df8540f6db2d36534.jpg)
Membro desde: 16/04/2007 11:58:32
Mensagens: 458
Localização: Curitiba
Offline
|
Bom Dia,
O EntityManager injetado pelo VRaptor é encerrado após a execução da logic ?
Mas por exemplo uma Thread que foi iniciada pelo logic, e que necessita do EntityManager para sua execução, ela consiguirá usar esse objeto ? O problema é se a Thread começar sua execução após o encerramento do EntityManager..
|
Sun Certified Java Programmer 5
Oracle Certified Web Component Developer 5
www.devlogic.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2010 11:08:04
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Isso o Lucas e o Paulo podem te responder com 100% de certesa. Mas vou dar meu pitaco.
Como o vraptor não reinventa a roda (a idéia é usar o que já tem de cada API), creio que ele usa o comportamento padrão do EntityManager. Lembre-se que o entity-manager não é thread-save, e o ciclo de vida dele é morrer conforme o ciclo da aplicação.
Creio que o problema que você escreveu você não tenha aqui, pois o entity-manager é único e compartilhado em todas as threads; e ela não é fechada conforme acaba o seu ciclo de execução.
Abraços
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2010 11:52:44
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
Na verdade, o EntityManagerFactory é único, o EntityManager é como se fosse a Session...
Vc está usando o EntityManager via algum plugin do vraptor2? se sim, provavelmente ele é aberto no começo da requisição e fechado no final...
PS: já considerou usar o vraptor 3? http://vraptor.caelum.com.br
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2010 12:52:26
|
renanpto
JavaEvangelist
![[Avatar]](/images/avatar/35df583a06ef378df8540f6db2d36534.jpg)
Membro desde: 16/04/2007 11:58:32
Mensagens: 458
Localização: Curitiba
Offline
|
Lucas Cavalcanti wrote:Na verdade, o EntityManagerFactory é único, o EntityManager é como se fosse a Session...
Vc está usando o EntityManager via algum plugin do vraptor2? se sim, provavelmente ele é aberto no começo da requisição e fechado no final...
PS: já considerou usar o vraptor 3? http://vraptor.caelum.com.br
Estou usando o plugin do VRaptor sim. Então não conseguirei utilizar o EntityManager dentro de uma Thread por exemplo ?
O projeto é feito usando a versao 2 do vraptor, somente por isso.
|
Sun Certified Java Programmer 5
Oracle Certified Web Component Developer 5
www.devlogic.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2010 12:57:30
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
o injetado pelo vraptor provavelmente não...
mas se esse plugin injetar a EntityManagerFactory, vc pode abrir (e fechar) uma nova EntityManager dentro dessa outra thread...
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2010 15:08:04
|
renanpto
JavaEvangelist
![[Avatar]](/images/avatar/35df583a06ef378df8540f6db2d36534.jpg)
Membro desde: 16/04/2007 11:58:32
Mensagens: 458
Localização: Curitiba
Offline
|
Lucas Cavalcanti wrote:o injetado pelo vraptor provavelmente não...
mas se esse plugin injetar a EntityManagerFactory, vc pode abrir (e fechar) uma nova EntityManager dentro dessa outra thread...
Há algum problema se eu instanciar o EntityManagerFactory dentro da Thread ? Não usando o injetado pelo VRaptor ?
Pensei em instanciar o EntityManagerFactory dentro da Thread, pois a thread nem conhece a logic que a chamou e usar o injetado pelo VRaptor exigirá muita refatoracao nas classes para passar o objeto até a classe que realmente precisa dele.
obs: o bloco de codigo que usa o EntityManagerFactory e EntityManger... será executado em especificas situações, pois a thread estará executando dai ocorrreu uma exceção, ai entra meu codigo para registrar o erro em uma tabela especifica.
Abraço
|
Sun Certified Java Programmer 5
Oracle Certified Web Component Developer 5
www.devlogic.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2010 15:44:13
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6394
Offline
|
só tome cuidado, pois criar uma entityManagerFactory eh uma operação custosa (lê arquivos, cria a configuração, etc) vc não deveria fazer isso várias vezes durante a aplicação... vc deveria fazer uma só.
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2010 16:01:34
|
renanpto
JavaEvangelist
![[Avatar]](/images/avatar/35df583a06ef378df8540f6db2d36534.jpg)
Membro desde: 16/04/2007 11:58:32
Mensagens: 458
Localização: Curitiba
Offline
|
Lucas Cavalcanti wrote:só tome cuidado, pois criar uma entityManagerFactory eh uma operação custosa (lê arquivos, cria a configuração, etc) vc não deveria fazer isso várias vezes durante a aplicação... vc deveria fazer uma só.
Entendo...
Não sei se terei problemas com esse detalhe, pois esse bloco de código será executado raramente.
O jeito é colocar pra teste e esperar para ver se aparece alguma surpresinha. hehehe
Caso apareca algum problema, terei que fazer da forma que comentou.
Obrigado.
|
Sun Certified Java Programmer 5
Oracle Certified Web Component Developer 5
www.devlogic.com.br |
|
|
 |
|
|