1 Reply Latest reply on Mar 19, 2010 4:57 PM by Mark Little

    JBossTS 4.10/JBoss6/Orbix/Oracle XA Question

    joe zendle Newbie



      We are playing with the nightly build of JBossTS 4.10 integrated into JBoss 6.M2. We are taking advantage of a recent fix for JIRA JBTM-670 (thanks JTS folks!) We are looking to replace weblogic w/ JBoss but we've run into a show stopper.


      We have a particularly troublsome use case involving XA as follows:


      1) We have a stateless EJB running on server A.

      2) when invoked the bean starts a transaction using OTS (TransactionCurrent) then makes a 'client' call to an Iona CORBA server running

      on server B.

      3) The method we are calling on B is defined as REQUIRES (via standard transactional POA policy symantics)

      4) the remote corba method inserts a record into a table using oracle XA driver and returns the id of the newly inserted record to A

      5) A receives the id and attempts to, within the same global transaction, read the newly inserted record to do further work.

      6) the transaction is then committed


      What we are seeing is that before the OTS transaction is committed the new record is *not* visible to A. After the transaction is comitted it is visible.


      What I would expect to see is:


      1) A would be able to read the record since it is within the same global transaction.




      2) If the Bean on A is marked as transaction required, I would think that I would not need to explicitly create an OTS transaction. The transaction created by the container would implicitly propagate to the corba call to server B (although I'm not sure if this is in the spec - but this is the behavior we see w/ weblogic)


      I've attached the bean code, server log, datasource definition.


      Our environment is:


      1) Hand built nightly of JBossTS 4.10. We build the JTS and run it on windows xp.

      2) we copied the jbossjts.jar and jbossjts-integration.jar from the jbossts build into the ./client and ./common/lib directories of jboss6.M2

      3) in docs/examples/transactions we run ant to install the jts into the 'all' configuration

      4) the IONA orbix641.jar client file is placed into the ./all/lib directory to be accessible to our .ear.


      Any help and recommendations is greatly appreciated.


      Note: before fix for JBTM-670 we were not even able to call the iona orb. We would get corba TRANSACTION_REQUIRED exceptions - so this is good progress.



      Thanks in advance.










        • 1. Re: JBossTS 4.10/JBoss6/Orbix/Oracle XA Question
          Mark Little Master

          It's been about 8 years since TS ran on Orbix and these days it's not an ORB we support in product, or have in house. So you're definitely going to have to do most of the legwork on this yourself unfortunately.


          I'd start by making sure that you've built the ORB portability layer with Orbix support, which will include the necessary interceptors. If you're lucky you may find historical versions of the Orbix classes in svn. If not you'll have to write them yourself. Without interceptors you won't get implicit context propagation in a distributed environment. Of course OTS allows for explicit propagation, but that's not exposed by JEE.


          If you go down this path you should try to run TS stand-alone, i.e., outside of the application server entirely. That will remove one variable from the equation. If you get the various implicit context propagation tests that ship with TS running in this way then you can put AS back into the picture.