Hi, I've been looking into the exception thrown upon the first access to Jackrabbit when deployed as JCA.
What I believe is the root cause is that the ConnectionRecoveryManager always enables auto-commit, causing any distributed transactions to fail (since the two phase commit can't work since it is already auto commited). So, does the ConnectionRecoveryManager need to enable auto-commit? Can auto-commit be forced to always be disabled when Jackrabbit is deployed using JCA? -- Cory On 11/10/2010, at 5:47 PM, Cory Prowse wrote: > Hi, > > I'm attempting to deploy Jackrabbit using the JCA deployment and seeing an > error about an unknown transaction "TX_0" upon first access to the Repository. > > I am deploying to Glassfish 3.0.1 and using H2 as the database. > This is with Jackrabbit 2.1.1, however I also checked out the latest trunk > and attempted to use a build from that but it seems broken at the moment. > > The error is: > javax.transaction.xa.XAException: Transaction "TX_0" not found; SQL statement: > COMMIT TRANSACTION TX_0 [90129-142] > > After digging through the running code, I discovered it was being thrown from > the XaSessionImpl.commit() method. > The same XID is passed into all methods, and the order of calls to > XASessionImpl is: > 1. start > 2. end > 3. prepare > 4. commit - (note: the parameter onephase is false so no prepare is called > inside this method) > > Also note that although the first usage is not a onephase transaction, future > calls are and there are no calls to XASessionImpl.prepare(). > > Can anyone shed some more light on this issue? > I'm worried that Jackrabbit isn't initialising itself correctly on startup? > > -- Cory
