Erro de migração do JBoss-4.0.5 para o JBoss-4.2.2

0 respostas
D

Estou efetuando a migração do JBoss-4.0.5 para o JBoss-4.2.2.
Tudo funcionava perfeitamente na versão antiga, porém na versão 4.2.2 a aplicação só está realizando consultas,
nenhum tipo de transação (incluir, alterar e excluir).

A mensagem é:
“javax.ejb.EJBException: java.lang.IllegalStateException: JTA EntityManager cannot access a transactions”.

O erro ocorre nessa linha:
transaction = manager.getTransaction();

Alguém está familiarizado com esse erro, pode ser alguma biblioteca ou configuração q está faltando?
Segue arquivos abaixo:

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence-unit name="UnicampMateriais">
	<provider>org.hibernate.ejb.HibernatePersistence</provider>
	<jta-data-source>
		java:/UnicampMateriaisDatasource
	</jta-data-source>
	
	<class>src...</class>
	<class>src...</class>

		<property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect" /> 
		<property name="hibernate.show_sql" value="true" />
		<property name="hibernate.cache.provider_class"
			value="org.hibernate.cache.HashtableCacheProvider" />
		<property name="hibernate.transaction.manager_lookup_class"
			value="org.hibernate.transaction.JBossTransactionManagerLookup" />
		<property name="hibernate.transaction.factory_class"
			value="org.hibernate.transaction.JTATransactionFactory" />

	</properties>
</persistence-unit>

ManagerFactory.java

public class ManagerFactory {

private static EntityManagerFactory factory;

static {
	try {
		factory = Persistence
				.createEntityManagerFactory("UnicampMateriais");
		
	} catch (Exception e) {
		throw new RuntimeException(e);
	}
}

public static EntityManager getEntityManagerInstance() {
	if (factory == null) {
		factory = Persistence
				.createEntityManagerFactory("UnicampMateriais");
        
        EntityManager em = factory.createEntityManager();
        em.joinTransaction();
        
		return em;
	} else {
        EntityManager em = factory.createEntityManager();
        em.joinTransaction();
		return em;
	}
}

}

ClasseBean

public @Stateless
class EnderecoBean implements EnderecoBeanRemote {

public static final String RemoteJNDIName = EnderecoBean.class
		.getSimpleName()
		+ "/remote";


public static final String LocalJNDIName = EnderecoBean.class
		.getSimpleName()
		+ "/local";


private EntityManager manager;
    
    
private EntityTransaction transaction;


public void alterarEndereco(EnderecoVO vo, SessionVO sessionVO) throws EnderecoException{
			
	try{		 	
                    manager = ManagerFactory.getEntityManagerInstance();
                        
		transaction = manager.getTransaction();
		
                    transaction.begin();

		...

		transaction.commit();
		 
	} catch (EnderecoException ex) {
		if(transaction != null && transaction.isActive()) transaction.rollback();
		throw ex;
	} catch (Exception e) {
		if(transaction != null && transaction.isActive()) transaction.rollback();
		throw new EnderecoException(e);

	} 
	finally 
	{
	    manager = null;
	}
}

Grato;
Diogo Alló

Criado 10 de abril de 2008
Respostas 0
Participantes 1