| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/06/2007 15:49:41
|
Alexandre Gazola
JavaTeenager
![[Avatar]](/images/avatar/07845cd9aefa6cde3f8926d25138a3a2.jpg)
Membro desde: 23/07/2004 14:48:23
Mensagens: 176
Localização: Rio de Janeiro
Offline
|
Olá pessoal,
estou tendo um problema ao trabalhar com transações distribuídas, WebLogic e Hibernate em ambiente Linux. Abaixo segue um fragmento de código para exemplificar o tipo de problema que estou tendo (1-detalhes abstraídos, 2-a estrutura de código é essa, nao tem como alterar, o sistema é grande e também é rodado stand-alone)
Ex.:
UserTransaction userTransaction = env.getJndi().getUserTransaction();
Transaction t = session.beginTransaction(); // t é uma transacao do Hibernate
session.save(); // salva alguma coisa no banco
t.commit // commit da transação do hibernate
userTransaction.commit(); // fim da transação distribuida
Bom, o primeiro problema que tive foi no commit da transação do hibernate. Ele me dava uma exceção dizendo que "cannot call commit when using distributed transactions". Entao, para corrigir isso, eu modifiquei 2 propriedades do Hibernate para os valores abaixo:
hibernate.transaction.factory_class=net.sf.hibernate.transaction.JTATransactionFactory
hibernate.transaction.manager_lookup_class=net.sf.hibernate.transaction.WeblogicTransactionManagerLookup
Isso corrigiu o problema apontado. E tudo funciona blz quando estou no ambiente WINDOWS. Quando eu mudo para o Linux, não sei pq motivos, o commit da transação do Hibernate não é refletido imediatamente no banco, mas só é realizado ao final da transação distribuída.
Alguém tem alguma idéia para contornar esse problema?
Obrigado
|
Alexandre Gazola
Blog: http://alexandregazola.wordpress.com
"Que proveito tem o homem ganhar o mundo inteiro e perder a sua alma?" (Mc. 8:36)
"Buscai, em primeiro lugar, o Reino de Deus e a sua justiça, e todas essas coisas vos serão dadas por acréscimo" (Mt. 6:33) |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/07/2007 00:17:39
|
plentz
Moderador
![[Avatar]](/images/avatar/73f490f3f868edbcd80b5d3f7cedc403.png)
Membro desde: 28/01/2004 07:34:12
Mensagens: 1584
Localização: Porto Alegre, RS
Offline
|
Mas perai. Deixa eu ver se entendi. Se sua transação é distribuída, ela deveria ser "commitada" realmente somente quando a transação toda termina, correto? Se sim, o funcionamento do hibernate está correto
|
Diego Plentz - Twitter
"Provide options, don't make lame excuses." |
|
|
 |
|
|
|
|