Transacao JTA

1 resposta
L

Pessoal,

Tenha a seguinte classe

public class ProdutorEntityManager {

    public void finaliza(@Disposes @BancoProducao EntityManager entityManager) {
        entityManager.close();
    }

    @PersistenceContext(unitName = "DEF")
    @Produces @BancoProducao EntityManager entityManager;
}


@Transactional(value = Transactional.TxType.REQUIRED, rollbackOn = Exception.class)
public abstract class CoreServico<T extends R2Entity> {

    @Inject @BancoProducao
    private EntityManager entityManager;
    
    protected EntityManager getEntityManager() {
    	return entityManager;
    }


public class ConcreteServico extends CoreServico<BaseXPTO> {


	@Override
	public void salvar(XPTOConcrete entity) {
	
		EntityManager entityManager = getEntityManager();
		try {
			XPTOConcrete xptoConcrete= (XPTOConcrete ) entity;
				entityManager.persist(xptoConcrete);
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}
}

Tenho o seguinte erro APENAS se a subclasse de “CoreServico” sobrescrever o metodo salvar.
Tenho outra classe que NÃO sobrescreve o método salvar e tudo corre bem.

Grave: javax.persistence.TransactionRequiredException
	at com.sun.enterprise.container.common.impl.EntityManagerWrapper.doTxRequiredCheck(EntityManagerWrapper.java:161)
	at com.sun.enterprise.container.common.impl.EntityManagerWrapper.doTransactionScopedTxCheck(EntityManagerWrapper.java:151)
	at com.sun.enterprise.container.common.impl.EntityManagerWrapper.persist(EntityManagerWrapper.java:281)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(Reflections.java:396)
	at org.jboss.weld.bean.builtin.CallableMethodHandler.invoke(CallableMethodHandler.java:49)
	at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56)
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:101)
	at org.jboss.weldx.persistence.EntityManager$-[telefone removido]$Proxy$_$$_Weld$Proxy$.persist(Unknown Source)

Minha aplicação tem transação controlada pelo AppServer
Alguém saberia o porque?

1 Resposta

E

Cara , você chegou a anotar sua sub classe com

@Transactional(value = Transactional.TxType.REQUIRED, rollbackOn = Exception.class) ?

Criado 16 de janeiro de 2014
Ultima resposta 14 de mar. de 2014
Respostas 1
Participantes 2