Transações distribuídas, WebLogic, Hibernate e Linux  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
Alexandre Gazola
JavaTeenager
[Avatar]

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)
plentz
Moderador
[Avatar]

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."
[Email] [WWW]
 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team