Error binding to externally managed transaction [message #1410865] |
Thu, 21 August 2014 20:40 |
Shelli Orton Messages: 101 Registered: September 2009 |
Senior Member |
|
|
Hi,
We are trying to implement a JPA application using EclipseLink 2.4 in JBoss EAP 6.2.0. We are getting this error:
07:55:57,295 ERROR [org.jboss.as.ejb3] (EJB default - 10) javax.ejb.EJBTransactionRolledbackException:
Exception Description: Error binding to externally managed transaction
Internal Exception: javax.transaction.RollbackException: ARJUNA016083: Can't register synchronization because the transaction is in aborted state
07:55:57,295 ERROR [org.jboss.as.ejb3.invocation] (EJB default - 10) JBAS014134: EJB Invocation failed on component DVCDataService for method public java.lang.Object ca.shaw.tno.oss.dvctool.datamodel.service.DVC
DataService.find(java.lang.Class,java.lang.Object) throws java.lang.IllegalArgumentException: javax.ejb.EJBTransactionRolledbackException:
Exception Description: Error binding to externally managed transaction
Internal Exception: javax.transaction.RollbackException: ARJUNA016083: Can't register synchronization because the transaction is in aborted state
Full stack trace attached.
The application is a batch processor and it makes calls to other services/applications as part of its workflow. It appears that the error occurs after we make a RESTful call to another service, but I don't know why that would cause our JPA transaction to be aborted. We've disabled the call to the REST service and haven't seen the error (although there's no guarantee that's the cause).
I have been unable to find anything that explains why I am getting this error or how to troubleshoot it. Can anyone give me some clues?
UPDATE:
After combing thru the logs, what is happening is that the batch processor has a loop to process the items in the batch. The item processor class is a stateless session bean and via the use of a semaphore we restrict the number of items that can be processed concurrently. While we can't acquire a permit from the semaphore, the batch process loops and keeps trying until one can be acquired. On each loop, it also checks the database to see if the batch status has been halted via an outside process. So, we have lots of hits to the database while waiting for a response back from the RESTful service which it's not receiving for another reason.
So, it appears that the transaction is aborted because too much time has passed?
UPDATE TWO:
We refactored the code a bit and have isolated that the problem occurs when our item processor makes a call to a RESTful webservice. Sometimes that call results in a
java.net.SocketException: Unexpected end of file from server
We're still stumped as to why that (or any exception) in the processing would result in an aborted transaction.
[Updated on: Fri, 29 August 2014 16:57] Report message to a moderator
|
|
|
Powered by
FUDForum. Page generated in 0.01914 seconds