Quando eu vou usar o Hibernate no JBOSS ele reclama de um classcastexception em TxManager, esse conflito é resolvido removendo o jta.jar.Mas eu preicso desse jar por causa da forma como estou abrindo transações. fazendo um Cast de (UserTransaction) porque estou usando jta para o hibernate gerenciar minhas transações.
Alguem sabe como resolver esse conflito?Se eu usar o jta.jar da cast na forma como o jbsso faz o load,se removo o jar,meu metodo de abrir sessao corrent(getCurrentSession).Nao funciona.
Meu hibernate cfg:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-configuration (View Source for full doctype...)>
- <hibernate-configuration>
- <session-factory>
- <!--
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@10.0.30.41:1521:DESE</property>
<property name="hibernate.connection.username">MADEIRADA</property>
<property name="hibernate.connection.password">MADEIRADADESE</property>
<property name="hibernate.current_session_context_class">jta</property>
<property name="jta.UserTransaction">jndi</property>
<property name="hibernate.session_factory_name">java:/hibernate/SessionFactory</property>
-->
<property name="hibernate.connection.datasource">java:/comp/env/jdbc/MadeiradaDS</property>
<property name="hibernate.session_factory_name">java:/hibernate/MySessionFactory</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="jta.UserTransaction">java:comp/UserTransaction</property>
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.pool_size">1</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">30</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_statement">50</property>
- <!-- DEVE SER SETADO PARA FALSE EM PRODUÇÃO
-->
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping class="br.com.indados.madeirada.model.pojos.Configuracao" />
<mapping class="br.com.indados.madeirada.model.pojos.Participante" />
<mapping class="br.com.indados.madeirada.model.pojos.Premio" />
<mapping class="br.com.indados.madeirada.model.pojos.Resgate" />
<mapping class="br.com.indados.madeirada.model.pojos.Importacao" />
<mapping class="br.com.indados.madeirada.model.pojos.Periodo" />
<mapping class="br.com.indados.madeirada.model.pojos.Venda" />
<mapping class="br.com.indados.madeirada.model.pojos.PremioProduto" />
<mapping class="br.com.indados.madeirada.model.pojos.TimeMadeirada" />
<mapping class="br.com.indados.madeirada.model.pojos.Produto" />
</session-factory>
</hibernate-configuration>
Meu metodo:
public void beginTransaction() throws IndadosAplicacaoException {
try {
tx = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction");
tx.begin();
} catch (Exception exception) {
throw new IndadosAplicacaoException(exception);
}
}
P.s. - tudo isso porque quero configurar o metodo getCurrentSession e usar transactions JTA se alguem souber como fazer de uma forma mais simples poderia me dar uma lulz?