| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/01/2012 09:19:57
|
paulohbmetal
GUJ Ranger
![[Avatar]](/images/avatar/a368b0de8b91cfb3f91892fbf1ebd4b2.jpg)
Membro desde: 28/08/2003 18:19:45
Mensagens: 760
Localização: Goiânia - Goiás
Offline
|
Olá pessoal, blz? Seguinte, estou com um problema me enchendo o saco aqui. Estou criando um aspecto para auditar operações de escrita no banco para todas as aplicações. Mas a única coisa que esta rotina faz é registrar o usuário da aplicação na sessão do banco e uma trigger existente nas tabelas pega esse usuário e faz o resto do serviço. Então, para registrar esse usuário no banco, chamo uma procedure com o createNativeQuery do JPA. O problema é que me parece que as operações estão sendo executadas em transações/conexões diferentes pois, quando a inclusão é feita, recebo uma exception falando que a trigger não encontrou o usuário registrado.
O método que é interceptado fica +/- assim:
O método do aspecto também está com o @Transacional (como o acima). Depurando o código, percebi que as operações estão sendo executadas em EntityManagers (instâncias) diferentes. É normal?
Bom, se quiserem mais detalhes, posso passar. Valeu!
|
Paulo Melo
JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
Sun Certified Java Programmer
Bacharel em Ciência da Computação
Especialista em Análise e Projetos de Sistemas de Informação
________________________________
"Que a cruz sagrada seja minha luz!!" |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/01/2012 09:24:55
|
jakefrog
GUJ Expert
![[Avatar]](/images/avatar/6e2400ec18b6f1952f1053c65df7a8b6.png)
Membro desde: 22/01/2007 22:00:53
Mensagens: 4191
Offline
|
Pode ser pq a trigger está disparando antes da transação realizar o commit. Você poderia iniciar uma nova transação para persistir apenas o dado necessário para a trigger, ao finalizar o método seria feito o commit e o restante do processo continuaria na mesma transação.
This message was edited 1 time. Last update was at 04/01/2012 09:25:08
|
Meu blog sobre java uaiHebert.com
Conceitos OO - Diga, não pergunte!, Lei de Demeter
TDD Primeiros Passos, JUnit com HSQLDB, JPA e Hibernate, Cobertura de testes com JUnit Ant e Emma, Cobrindo seus testes com Cobertura, JUnit, HSQLDB, JPA
Código Limpo: Partes: 01,02,03,04,05
Web/JSF - Criando um WebServer, Tratando Exceções, Autenticação de Usuários (Filter/Servlet), JSF - Hello World, AutoComplete, JSF: Converter e Bean Auto Complete, Validação de Login de Usuário com JSF e JAAS, JSF Exibindo Objeto e Mensagens após Redirect, JSF Exemplos Simples com Ajax, JSF Parametros por Get Request RESTFullAplicação Web Completa JSF EJB JPA JAAS, Lazy JSF Datatable Pagination (Primefaces)
Design Pattern - Strategy, Design Pattern - Observer (Parte 01), Design Pattern - Observer (Parte 02)
Business (JPA)- Hibernate 3 com JPA 2, Create schema script: Ant, Hibernate 3 e JPA 2, TableGenerator Chave Primária Simples, SequenceGenerator,Chave Primária Composta, Mapeando Datas (Date) e Enum, Mapeando Duas Tabelas em uma Classe, @OneToOne Unidirecional e Bidirecional, @OneToMany e @ManyToOne Unidirecional e Bidirecional, @ManyToMany Unidirecional e Bidirecional, Ordernando listas e utilizando Map como atributo mapeado,Uma tabela por herança, JPA Uma Classe por Sub-Classe, JPA Consultas e Dicas, [HOT]Quatro soluções para LazyInitializationException[HOT]
SCJP(1.6 - Ingles - 29/12/2009)
SCWCD(1.5 - Ingles - 30/06/2010)
Vamos em frente que atrás vem gente! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/01/2012 12:53:27
|
paulohbmetal
GUJ Ranger
![[Avatar]](/images/avatar/a368b0de8b91cfb3f91892fbf1ebd4b2.jpg)
Membro desde: 28/08/2003 18:19:45
Mensagens: 760
Localização: Goiânia - Goiás
Offline
|
jakefrog wrote:Pode ser pq a trigger está disparando antes da transação realizar o commit.
Cara, pode acreditar, vc acabou de fazer a boa ação do dia. Putz! Matou a pau!!!
Era isso mesmo!
|
Paulo Melo
JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
Sun Certified Java Programmer
Bacharel em Ciência da Computação
Especialista em Análise e Projetos de Sistemas de Informação
________________________________
"Que a cruz sagrada seja minha luz!!" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2012 08:05:24
|
paulohbmetal
GUJ Ranger
![[Avatar]](/images/avatar/a368b0de8b91cfb3f91892fbf1ebd4b2.jpg)
Membro desde: 28/08/2003 18:19:45
Mensagens: 760
Localização: Goiânia - Goiás
Offline
|
Engraçado, a coisa parece que funciona para umas situações e para outras não. Entrei em contato com os BDA's e me informaram que as solicitações (execução da procedure e insert) estão sendo executadas em connections diferentes. Estou achando muito sinistro. O aspecto que faz a auditoria está em um jar diferente, sabem se pode ocorrer algum problema com isso?
Valeu!
Paz e bem!
|
Paulo Melo
JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
Sun Certified Java Programmer
Bacharel em Ciência da Computação
Especialista em Análise e Projetos de Sistemas de Informação
________________________________
"Que a cruz sagrada seja minha luz!!" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/02/2012 11:36:51
|
paulohbmetal
GUJ Ranger
![[Avatar]](/images/avatar/a368b0de8b91cfb3f91892fbf1ebd4b2.jpg)
Membro desde: 28/08/2003 18:19:45
Mensagens: 760
Localização: Goiânia - Goiás
Offline
|
Galera, percebi que se retirar o
da declaração do EntityManager, tudo funciona numa boa mas, se colocar é problema na certa. A dúvida é se o EXTENDED estaria forçando a busca de uma nova conexão (que já foi confirmado pelos DBA's).
Alguém mais já teve problema parecido?
Editado: Antes que me perguntem o EXTENDED está lá para evitar os famigerados LazyInicializationException...
This message was edited 1 time. Last update was at 01/02/2012 11:57:44
|
Paulo Melo
JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
Sun Certified Java Programmer
Bacharel em Ciência da Computação
Especialista em Análise e Projetos de Sistemas de Informação
________________________________
"Que a cruz sagrada seja minha luz!!" |
|
|
 |
|
|
|
|