hi,
in a
previous post with subject "[JBoss-user] "can't enlist" error on second pass
through resource adapter" i described a problem i was having with multiple,
non-concurrent invocations of a resource adapter via a stateless session
bean. the responder's suggestion (swapping the order of
UserTransaction.begin() and ConnectionFactory.getConnection()) got me past this
problem. i still have an outstanding question out as to why this should be
required, but we'll leave that as a separate thread.
my new
problem is that i can't perform multiple, concurrent invocations of the resource
adapter. during the 2nd call to ConnectionFactory.getConnection(), i get
the "Can't enlist - already a tx!" error. in case it's helpful, this is
the same error i got before i flipped the order of UserTransaction.begin() and
ConnectionFactory.getConnection().
i put some
comments in the EJB method that invokes the resource adapter to help me track
down what state caused the problem. i also threw in a sleep call to assist
as well.
same
environment as in my previous post, which i'll repeat here:
i'm using
jboss 3.0.4 with tomcat 4.1.12. my jdk is 1.3.1.06. platform is w2kp
sp3. the resource adapter supports XA. res-sharing-scope is set to
Unshareable in the ejb-jar.xml file of the EJB that uses the resource
adapter.
this use
case works fine under oc4j 9.0.3 and TeS 7.3.
any
assistance would be appreciated. i'm trying to understand the
feasibility/cost of a port of our resource adapter to jboss - an inability to
use the resource adapter in a concurrent fashion would likely prevent us from
using jboss.
thanks.
-mike
ejb code
snippets:
javax.resource.cci.ConnectionFactory conFac
= (javax.resource.cci.ConnectionFactory)
ctx.lookup ("java:comp/env/HPIARM");
System.out.println("getting connection");
cx = conFac.getConnection();
System.out.println("got connection");
ctx.lookup ("java:comp/env/HPIARM");
System.out.println("getting connection");
cx = conFac.getConnection();
System.out.println("got connection");
tran = (UserTransaction)
context.getUserTransaction();
System.out.println("beginning
transaction");
tran.begin();
System.out.println("begun transaction");
tran.begin();
System.out.println("begun transaction");
try {
Thread.sleep(5000);
}
catch (InterruptedException ie) { }
Thread.sleep(5000);
}
catch (InterruptedException ie) { }
// do
some work on cs via Interaction interface
tran.commit();
System.out.println("commited transaction");
cx.close();
System.out.println("closed connection");
System.out.println("closed connection");
output in
server.log:
2003-01-10 13:31:18,286 INFO [STDOUT]
getting connection
2003-01-10 13:31:18,286 INFO [STDOUT] got connection
2003-01-10 13:31:18,286 INFO [STDOUT] beginning transaction
2003-01-10 13:31:18,306 INFO [STDOUT] begun transaction
2003-01-10 13:31:18,406 INFO [STDOUT] getting connection
2003-01-10 13:31:18,436 WARN [org.jboss.resource.connectionmanager.XATxConnectionManager$XAConnectionEventListener] in Enlisting tx, illegal state: TransactionImpl:XidImpl [FormatId=257, GlobalId=fcmgrove//8, BranchQual=]
2003-01-10 13:31:18,436 ERROR [STDERR] java.lang.IllegalStateException: Can't enlist - already a tx!
2003-01-10 13:31:18,446 ERROR [STDERR] at org.jboss.resource.connectionmanager.XATxConnectionManager$XAConnectionEventListener.enlist(XATxConnectionManager.java:250)
2003-01-10 13:31:18,446 ERROR [STDERR] at org.jboss.resource.connectionmanager.XATxConnectionManager.managedConnectionReconnected(XATxConnectionManager.java:202)
2003-01-10 13:31:18,446 ERROR [STDERR] at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:534)
2003-01-10 13:31:18,466 ERROR [STDERR] at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:814)
2003-01-10 13:31:18,466 ERROR [STDERR] at com.hp.ov.activator.resmgr.connector.HPIAConnectionFactory.getConnection(Unknown Source)
2003-01-10 13:31:18,476 ERROR [STDERR] at com.hp.ov.activator.resmgr.ejb.ServiceActivationBean.executeService(Unknown Source)
2003-01-10 13:31:18,476 ERROR [STDERR] at java.lang.reflect.Method.invoke(Native Method)
2003-01-10 13:31:18,476 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:660)
2003-01-10 13:31:18,486 ERROR [STDERR] at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
2003-01-10 13:31:18,486 ERROR [STDERR] at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
2003-01-10 13:31:18,486 ERROR [STDERR] at org.jboss.ejb.plugins.AbstractTxInterceptorBMT.invokeNext(AbstractTxInterceptorBMT.java:144)
2003-01-10 13:31:18,496 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorBMT.invoke(TxInterceptorBMT.java:62)
2003-01-10 13:31:18,496 ERROR [STDERR] at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:77)
2003-01-10 13:31:18,496 ERROR [STDERR] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
2003-01-10 13:31:18,496 ERROR [STDERR] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
2003-01-10 13:31:18,506 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:313)
2003-01-10 13:31:18,506 ERROR [STDERR] at org.jboss.ejb.Container.invoke(Container.java:712)
2003-01-10 13:31:18,506 ERROR [STDERR] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
2003-01-10 13:31:18,516 ERROR [STDERR] at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:98)
2003-01-10 13:31:18,516 ERROR [STDERR] at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:102)
2003-01-10 13:31:18,516 ERROR [STDERR] at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:77)
2003-01-10 13:31:18,526 ERROR [STDERR] at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:80)
2003-01-10 13:31:18,526 ERROR [STDERR] at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:111)
2003-01-10 13:31:18,526 ERROR [STDERR] at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
2003-01-10 13:31:18,536 ERROR [STDERR] at $Proxy16.executeService(Unknown Source)
2003-01-10 13:31:18,536 ERROR [STDERR] at com.hp.ov.activator.deployment.servlet.component.ActivateAction.execute(Unknown Source)
2003-01-10 13:31:18,546 ERROR [STDERR] at com.hp.ov.activator.deployment.servlet.DeployerServlet.doPost(Unknown Source)
2003-01-10 13:31:18,546 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
2003-01-10 13:31:18,546 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
2003-01-10 13:31:18,556 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
2003-01-10 13:31:18,556 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
2003-01-10 13:31:18,556 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
2003-01-10 13:31:18,556 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
2003-01-10 13:31:18,566 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
2003-01-10 13:31:18,566 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
2003-01-10 13:31:18,576 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
2003-01-10 13:31:18,576 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
2003-01-10 13:31:18,576 ERROR [STDERR] at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
2003-01-10 13:31:18,586 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
2003-01-10 13:31:18,586 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
2003-01-10 13:31:18,586 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
2003-01-10 13:31:18,596 ERROR [STDERR] at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
2003-01-10 13:31:18,596 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
2003-01-10 13:31:18,596 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
2003-01-10 13:31:18,596 ERROR [STDERR] at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
2003-01-10 13:31:18,606 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
2003-01-10 13:31:18,626 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
2003-01-10 13:31:18,636 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
2003-01-10 13:31:18,636 ERROR [STDERR] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
2003-01-10 13:31:18,636 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
2003-01-10 13:31:18,636 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
2003-01-10 13:31:18,646 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
2003-01-10 13:31:18,646 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
2003-01-10 13:31:18,646 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
2003-01-10 13:31:18,666 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
2003-01-10 13:31:18,666 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
2003-01-10 13:31:18,676 ERROR [STDERR] at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
2003-01-10 13:31:18,676 ERROR [STDERR] at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
2003-01-10 13:31:18,676 ERROR [STDERR] at java.lang.Thread.run(Thread.java:479)
2003-01-10 13:31:23,484 INFO [STDOUT] commited transaction
2003-01-10 13:31:23,484 INFO [STDOUT] closed connection
2003-01-10 13:31:18,286 INFO [STDOUT] got connection
2003-01-10 13:31:18,286 INFO [STDOUT] beginning transaction
2003-01-10 13:31:18,306 INFO [STDOUT] begun transaction
2003-01-10 13:31:18,406 INFO [STDOUT] getting connection
2003-01-10 13:31:18,436 WARN [org.jboss.resource.connectionmanager.XATxConnectionManager$XAConnectionEventListener] in Enlisting tx, illegal state: TransactionImpl:XidImpl [FormatId=257, GlobalId=fcmgrove//8, BranchQual=]
2003-01-10 13:31:18,436 ERROR [STDERR] java.lang.IllegalStateException: Can't enlist - already a tx!
2003-01-10 13:31:18,446 ERROR [STDERR] at org.jboss.resource.connectionmanager.XATxConnectionManager$XAConnectionEventListener.enlist(XATxConnectionManager.java:250)
2003-01-10 13:31:18,446 ERROR [STDERR] at org.jboss.resource.connectionmanager.XATxConnectionManager.managedConnectionReconnected(XATxConnectionManager.java:202)
2003-01-10 13:31:18,446 ERROR [STDERR] at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:534)
2003-01-10 13:31:18,466 ERROR [STDERR] at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:814)
2003-01-10 13:31:18,466 ERROR [STDERR] at com.hp.ov.activator.resmgr.connector.HPIAConnectionFactory.getConnection(Unknown Source)
2003-01-10 13:31:18,476 ERROR [STDERR] at com.hp.ov.activator.resmgr.ejb.ServiceActivationBean.executeService(Unknown Source)
2003-01-10 13:31:18,476 ERROR [STDERR] at java.lang.reflect.Method.invoke(Native Method)
2003-01-10 13:31:18,476 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:660)
2003-01-10 13:31:18,486 ERROR [STDERR] at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
2003-01-10 13:31:18,486 ERROR [STDERR] at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:107)
2003-01-10 13:31:18,486 ERROR [STDERR] at org.jboss.ejb.plugins.AbstractTxInterceptorBMT.invokeNext(AbstractTxInterceptorBMT.java:144)
2003-01-10 13:31:18,496 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorBMT.invoke(TxInterceptorBMT.java:62)
2003-01-10 13:31:18,496 ERROR [STDERR] at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:77)
2003-01-10 13:31:18,496 ERROR [STDERR] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:130)
2003-01-10 13:31:18,496 ERROR [STDERR] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:204)
2003-01-10 13:31:18,506 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:313)
2003-01-10 13:31:18,506 ERROR [STDERR] at org.jboss.ejb.Container.invoke(Container.java:712)
2003-01-10 13:31:18,506 ERROR [STDERR] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
2003-01-10 13:31:18,516 ERROR [STDERR] at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:98)
2003-01-10 13:31:18,516 ERROR [STDERR] at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:102)
2003-01-10 13:31:18,516 ERROR [STDERR] at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:77)
2003-01-10 13:31:18,526 ERROR [STDERR] at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:80)
2003-01-10 13:31:18,526 ERROR [STDERR] at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:111)
2003-01-10 13:31:18,526 ERROR [STDERR] at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
2003-01-10 13:31:18,536 ERROR [STDERR] at $Proxy16.executeService(Unknown Source)
2003-01-10 13:31:18,536 ERROR [STDERR] at com.hp.ov.activator.deployment.servlet.component.ActivateAction.execute(Unknown Source)
2003-01-10 13:31:18,546 ERROR [STDERR] at com.hp.ov.activator.deployment.servlet.DeployerServlet.doPost(Unknown Source)
2003-01-10 13:31:18,546 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
2003-01-10 13:31:18,546 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
2003-01-10 13:31:18,556 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
2003-01-10 13:31:18,556 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
2003-01-10 13:31:18,556 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
2003-01-10 13:31:18,556 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
2003-01-10 13:31:18,566 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
2003-01-10 13:31:18,566 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
2003-01-10 13:31:18,576 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
2003-01-10 13:31:18,576 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
2003-01-10 13:31:18,576 ERROR [STDERR] at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
2003-01-10 13:31:18,586 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
2003-01-10 13:31:18,586 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
2003-01-10 13:31:18,586 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
2003-01-10 13:31:18,596 ERROR [STDERR] at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
2003-01-10 13:31:18,596 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
2003-01-10 13:31:18,596 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
2003-01-10 13:31:18,596 ERROR [STDERR] at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
2003-01-10 13:31:18,606 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
2003-01-10 13:31:18,626 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
2003-01-10 13:31:18,636 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
2003-01-10 13:31:18,636 ERROR [STDERR] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
2003-01-10 13:31:18,636 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
2003-01-10 13:31:18,636 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
2003-01-10 13:31:18,646 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
2003-01-10 13:31:18,646 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
2003-01-10 13:31:18,646 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
2003-01-10 13:31:18,666 ERROR [STDERR] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
2003-01-10 13:31:18,666 ERROR [STDERR] at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
2003-01-10 13:31:18,676 ERROR [STDERR] at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
2003-01-10 13:31:18,676 ERROR [STDERR] at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
2003-01-10 13:31:18,676 ERROR [STDERR] at java.lang.Thread.run(Thread.java:479)
2003-01-10 13:31:23,484 INFO [STDOUT] commited transaction
2003-01-10 13:31:23,484 INFO [STDOUT] closed connection