JBoss Community

Re: JCA Spec violation using resource-adapter in JBoss 7?

created by Jeff Steidl in IronJacamar - View the full discussion

To quickly see the problem, search the log summary jleinawe provided (tempm.txt) for "xaResourceWrapper2".  The first three instances are:

 

in:managedConnectionImpl0.getXAResource() -> xaResourceWrapper2 #1 @1362075193107..1362075193110

[...]

in:xaResourceWrapper2.start(xid3,2097152) #6 @1362075193148..1362075193161

[...]

in:xaResourceWrapper2.start(xid5,2097152) threw #8 @1362075193570..1362075193577

 

As you can see, the app-server gets this XAResource from the RA, then calls XAResource.start on it multiple times in a row without calling XAResource.end in between (which is why the RA throws an exception the second time xaResourceWrapper2.start is called).  If you keep searching for "xaResourceWrapper2", you'll see several more calls to XAResource.start, but no calls to XAResource.end.

 

If you then search from the top of the log summary for "xid3", you'll find the following calls made to the RA ("in:" calls):

 

in:xaResourceWrapper0.start(xid3,0) #4 @1362075179562..1362075179570

[...]

in:xaResourceWrapper2.start(xid3,2097152) #6 @1362075193148..1362075193161

[...]

in:xaResourceWrapper0.end(xid3,67108864) #4 @1362075193388..1362075193396

[...]

in:xaResourceWrapper0.commit(xid3,true) #4 @1362075193397..1362075193438

 

You can see that while the app-server is ending the association for xaResourceWrapper0 before committing the transaction, it is failing to do so for xaResourceWrapper2.

 

This line shows that wlConnection0 is the connection handle being used for managedConnectionImpl0:

 

   in:managedConnectionImpl0.getConnection(null,connectionRequestInfoImpl0) -> wlConnection0 #1 @1362075193164..1362075193199

 

And if you look at wlConnection0 being closed:

 

   in:wlConnection0.close() #1 @1362075193351..1362075193382

      out:Connection.stop() #1 @1362075193356..1362075193361

      out:XAResource.end(xid3,67108864) #4 @1362075193364..1362075193368

      out:ConnectionEventListener.connectionClosed(javax.resource.spi.ConnectionEvent[source=OracleJMSConnector.ManagedConnectionImpl.adc2100774.us.oracle.com.-2ebdb17:13d22011ace:-7ffb.20]) #1 @1362075193372..1362075193379

out:MessageEndpoint.afterDelivery() #4 @1362075193386..1362075193444

 

you'll see that the RA is calling ConnectionEventListener.connectionClosed, but the app-server is failing to delist xaResourceWrapper2 in response (as the JCA spec requires).  [Note that the "out:XAResource.end" call above is for a secondary JMS provider XAResource used internally by the RA, and is not the same as xaResourceWrapper2.]

 

Since the above lines are grabbed as-is (except for indent) from tempm.txt, you can see those calls in context by searching for them in that file.

Reply to this message by going to Community

Start a new discussion in IronJacamar at Community