(i posted the following to the user list without a
response. it was suggested to me by someone with jboss to post to the dev
list)
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. res-sharing-scope of Shareable
causes other problems that i'm currently trying to debug. i've found
minimal documentation on res-sharing-scope - perhaps the Unshareable setting is
the problem?
this
use case works fine under oc4j 9.0.3 and TeS 7.3,
albeit without res-sharing-scope set.
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