Would be extremely grateful if someone could throw me a bone here..
I am trying to get the transaction bridge going with jboss 4.2.2 and jbossts 4.2.3.SP7.
I have got the Bistro demo going but upon invoking the web service I get the following error when trying to 'resume' the JTA transaction (Kindly added stack trace)
17:33:57,247 INFO [STDOUT] CLIENT: obtaining userTransaction...
17:33:57,247 INFO [STDOUT] CLIENT: starting the transaction...
17:33:57,809 INFO [STDOUT] CLIENT: transaction ID= AtomicTransactionIdentifier: urn:-762067e5:1257:483eda60:3f
17:33:57,809 INFO [STDOUT] CLIENT: calling business Web Services...
17:33:58,012 INFO [JaxWSClientHeaderContextProcessor] getHeaders
17:33:58,059 INFO [JaxWSClientHeaderContextProcessor] handleOutbound
17:33:58,247 INFO [JaxWSServerHeaderContextProcessor] getHeaders
17:33:58,247 INFO [JaxWSServerHeaderContextProcessor] handleInbound
17:33:58,325 ERROR [JaxWSTransactionBridgeHandler] javax.transaction.InvalidTransactionException
17:33:58,325 ERROR [STDERR] javax.transaction.InvalidTransactionException
17:33:58,325 ERROR [STDERR] at com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple.resume(TransactionManagerImple.java:148)
17:33:58,325 ERROR [STDERR] at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.resume(BaseTransactionManagerDelegate.java:117)
17:33:58,325 ERROR [STDERR] at org.jboss.txbridge.InboundBridge.start(InboundBridge.java:69)
17:33:58,325 ERROR [STDERR] at org.jboss.txbridge.JaxWSTransactionBridgeHandler.handleInbound(JaxWSTransactionBridgeHandler.java:97)
17:33:58,325 ERROR [STDERR] at org.jboss.txbridge.JaxWSTransactionBridgeHandler.handleMessage(JaxWSTransactionBridgeHandler.java:61)
17:33:58,325 ERROR [STDERR] at org.jboss.ws.core.jaxws.handler.HandlerChainExecutor.handleMessage(HandlerChainExecutor.java:295)
17:33:58,325 ERROR [STDERR] at org.jboss.ws.core.jaxws.handler.HandlerChainExecutor.handleMessage(HandlerChainExecutor.java:140)
17:33:58,325 ERROR [STDERR] at org.jboss.ws.core.jaxws.handler.HandlerDelegateJAXWS.callRequestHandlerChain(HandlerDelegateJAXWS.java:87)
17:33:58,325 ERROR [STDERR] at org.jboss.ws.core.server.ServiceEndpointInvoker.callRequestHandlerChain(ServiceEndpointInvoker.java:126)
17:33:58,325 ERROR [STDERR] at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:198)
17:33:58,325 ERROR [STDERR] at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:408)
It appears the 'failuire' happens in TransactionManagerImple at line 125 doing the following check (whilst calling 'resume')
if (which instanceof TransactionImple)
Where basically they are different types. The check appears to be checking for
com.arjuna.ats.internal.jta.transaction.jts.TransactionImpl but the bridge appears to be supplying a com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.transactionImpl. Moreover some of the methods which would be called on sid transaction object do not exist, hence definitly a different object.
The import of the transaction via the TXImporter seems to go fine.
Would be extremely grateful for some help as it is very important we get this working.
Incidentally, when will the bridge be fully integrated into XTS? I understand this is 4.4, but when is this scheduled for release?
Got a bit further here.
It seems if I make JTA (using the JTS jars) my transaction manager it all works again.
I thought having JTS running was the requirement for having distributed WS-AT transactions? Do I only need the JTS jars but could infact, just run JTA with distributed WS-AT transactions using JTS jars?
The bridge expects to be running with the JTA, not the JTS. It hardcodes the JTA version of TxImporter, see InboundBridge.java It should be fairly trivial to change it to run with the JTS, but it does not explicitly support that as yet, see comment in getTransaction() Nothing in XTS actually requires JTS and indeed later versions build against the JTA jars in stead of JTS. Making a similar change to your ant build scripts is probably easier than recoding the bridge.
Thanks - We now have a .net initiated transaction with database updates, flowing through to a java webservice over WS-AT, which is then bridged to a JTA transaction which goes on to update a MySQL XA datasource. We have tested various rollback scenarios and it all appears to work.
What are the licencing costs/requirements for XTS?
> We have tested various rollback scenarios and it all appears to work.
yeah, it's all rosy until you start testing crash recovery :-)
> What are the licencing costs/requirements for XTS?
It's GPL for now, but stay tuned.
XTS support should be included with the subscription for EAP 5.0 when that comes along, although the bridge probably won't be ready until a later point release.
Currently we have a closed source J2EE appliaction which runs on the 'community' (for want of a better word) version of JBoss.
If we decided to use XTS as our part of our solution on the community version of jboss, how does this affect our J2EE application?
Would we have to make the J2EE application open source?
Or would we only have to publish any changes we have to make to XTS?
Or would our application have to become open source unless we paid for an EAP support contract?
Please create a separate forum entry for this question.