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
