3 Replies Latest reply on Oct 4, 2007 5:32 PM by Francisco Reverbel

    UserTransaction over iiop

    Adrian Brock Master

      In jboss-head Francisco has deleted the code that does the UserTransaction over iiop.

      This is not real JTS, it just a way to attach the server side transaction id to the client
      thread and pass it with every invocation to the server.

      This code works in 4.2 with the new transaction manager (see txpropiiop testcase)
      so I'm not sure why this was deleted?

      I've removed the txpropiiop test from jboss-head since it no longer compiles.

      I think we should just copy back the 4.2 stuff if it really is working.

        • 1. Re: UserTransaction over iiop
          Jonathan Halliday Master

          I guess we need to distinguish between doing remote (i.e. client side) transaction control for what are really non-distributed tx vs. doing real distributed tx.

          The code in question is the former, with an iiop transport. Similarly there is a default UserTransaction implementation that provides client-side control to the JTA (over the old jboss remoting?) For real JTS e.g. using AS with JBossTS JTS, the client side UserTransaction implementation will need to be different.

          I agree the existing code can be copied back, so long as it's abstracted by some API so we can replace it with a different one when integrating the JBossTS JTS. That may be as simple as registering a different object in JNDI.

          The question of how JTS like tests i.e. tx over IIOP should work in AS is a whole other can of worms, I'll start a new thread for that.

          • 2. Re: UserTransaction over iiop
            Francisco Reverbel Novice

             

            "adrian@jboss.org" wrote:
            In jboss-head Francisco has deleted the code that does the UserTransaction over iiop.

            This is not real JTS, it just a way to attach the server side transaction id to the client
            thread and pass it with every invocation to the server.

            This code works in 4.2 with the new transaction manager (see txpropiiop testcase)
            so I'm not sure why this was deleted?


            I don't think the IIOPUserTransaction in 4.2 works with JBossTS. The txpropiiop testcase does not test UserTransaction, it propagates an OTS context built by hand. The testcase for UserTransaction over IIOP is txiiop, which appears to be disabled in 4.2.



            • 3. Re: UserTransaction over iiop
              Francisco Reverbel Novice

               

              "jhalliday" wrote:
              I guess we need to distinguish between doing remote (i.e. client side) transaction control for what are really non-distributed tx vs. doing real distributed tx.

              The code in question is the former, with an iiop transport. Similarly there is a default UserTransaction implementation that provides client-side control to the JTA (over the old jboss remoting?) For real JTS e.g. using AS with JBossTS JTS, the client side UserTransaction implementation will need to be different.

              I don't see why there need to be a difference at the client side. If the OTS context propagation format is used in both cases (non-distributed tx and distributed tx), then what the client-side UserTransaction implementation does in the non-distributed case is the same it would do in the distributed case: obtain an OTS context from the TM, associate it with the current thread, and propagate it along with outgoing requests. The real difference is in the server/TM side.

              "jhalliday" wrote:
              I agree the existing code can be copied back, so long as it's abstracted by some API so we can replace it with a different one when integrating the JBossTS JTS. That may be as simple as registering a different object in JNDI.

              The problem with the deleted code is that (at the server-side) it had hard dependencies on JBoss TM classes (XidFactory and TransactionImpl).