Não consigo identificar a causa: javax.ejb.EJBTransactionRolledbackException:

0 respostas
P

Tennho essa exception abaixo, que nao consigo identificar o motivo..

A classe pessoa taem varios relacionamentos, e todos sao inseridos(aparece o print no console) .
14:45:53,449 INFO [STDOUT] Hibernate: insert into cliente.cliente (....)
14:45:53,490 INFO [STDOUT] Hibernate: insert into integracao (...)
...
mas qdo termina de executar o metodo que salva que esta no ejb, no metodo que chama ja vai direto para o catch....

javax.ejb.EJBTransactionRolledbackException: Transaction rolled back
	at org.jboss.ejb3.tx.Ejb3TxPolicy.handleEndTransactionException(Ejb3TxPolicy.java:54)
	at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:175)
	at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:87)
	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
	at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:176)
	at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:216)
	at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
	at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
	at $Proxy660.salvarColaboradorSenai(Unknown Source)
	at br.senai.sc.integracao.pessoa.colaborador.action.ColaboradorIntegracaoAction.process(ColaboradorIntegracaoAction.java:57)
	at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:649)
	at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:603)
	at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:433)
	at org.jboss.soa.esb.listeners.message.MessageAwareListener$TransactionalRunner.run(MessageAwareListener.java:540)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Could not commit transaction.
	at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1435)
	at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:137)
	at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
	at org.jboss.aspects.tx.TxPolicy.endTransaction(TxPolicy.java:170)
	... 28 more

dentro do metodo no ejb nao consigo pegar a exception dentro do catch, somente no catch do metodo que chama o ejb

metodo que chama o ejb

try {
			log.info(message.getBody().get().toString());			
			IntegracaoDTO cs = (IntegracaoDTO) message.getBody().get();
			Context ctx = new InitialContext();
			IntegracaoServiceLocal local = (IntegracaoServiceLocal) ctx.lookup("IntegracaoService/local");
			local.salvarIntegracao(cs);
		} catch (Exception e) {
                       //o debug  para aqui qdo ocorre a exception			 
			throw new IntegracaoRuntimeException(e);
		}

ejb

@Stateless
public class IntegracaoService implements IntegracaoServiceLocal {

public void myMethod()
{
try{
Pessoa p...
Integracao pi... 
p.setIntegracao(pi);
pi.setPessoa(p);
entityManager.persist(p);
entityManager.persist(pi);//se eu tirar esta linha, funciona sem erro
} catch (Exception e) {
//qdo ocorre a excetion o debug nao para aqui
log.error("Exception ", e);
throw new IntegracaoException(e);
}
}

mapeamentos

class Integracao{
@Id
@GenericGenerator(name = "pkfk", strategy = "foreign", parameters = {
        @Parameter(name = "property", value = "pessoa")
})
@Column(name="id_pessoa")
@GeneratedValue(generator = "pkfk")
private Integer idPessoa;

@OneToOne
@PrimaryKeyJoinColumn
private Pessoa pessoa;

}

class Pessoa{

	@OneToOne(mappedBy = "pessoa")
	@Cascade({ CascadeType.ALL, CascadeType.DELETE_ORPHAN })
	private Integracao integracao;

}
Criado 20 de junho de 2011
Respostas 0
Participantes 1