1 2 Previous Next 18 Replies Latest reply on Jul 12, 2007 1:07 PM by marklittle

    needed: overview of JBoss transaction landscape for noobs

    kevinpauli

      Apologies in advance for what must be a dumb question:

      I have searched around wikis, forums, and various PDF documentation for an entire day and still can't seem to get a clear picture of things. Each piece of documentation describes a module in isolation, but being new to JBoss, I am lost in the trees and can't find anything that gives a big picture explanation of what's the difference between JBoss JTA, JBoss JTS, JBoss Transactions, and when you'd want to use one or the other, and which ones are included and configured by default for the different JBoss AS binary distributions. Can anyone point me in the right direction?

        • 1. Re: needed: overview of JBoss transaction landscape for noob
          peterj

          JBoss Transactions is a product that resulted from the technology that was purchased from Arjuna some time ago. JBoss Transactions consists of JTA and JTS implementations. Briefly, use JTA when all of your transaction concerns are limited to applications deployed to a single JBoss Application Server instance. Use JTS if you need XA transaction support among multiple JBoss AS instances, or between JBoss AS and other XA-compliant transactional entities such as other app servers. messaging servers, etc.

          The JTA component of JBoss Transactions is built into JBoss AS 4.2 and the 5.0 betas.

          JBoss AS 4.0.5 and earlier used a prior transaction manager. You can install JBoss Transactions (either the JTA or JTS flavor) into JBoss AS 4.0.3 or higher.

          Note also that while JTA is LGPL, JTS has a separate license and requires a support contract for use in production (at least, that is my understanding).

          • 2. Re: needed: overview of JBoss transaction landscape for noob
            mr_dronski

             


            Note also that while JTA is LGPL, JTS has a separate license and requires a support contract for use in production (at least, that is my understanding).


            JTS is dual, namely GPL/commercial. So either buy your way out, or use in compliance with GPL.

            • 3. Re: needed: overview of JBoss transaction landscape for noob
              marklittle

               

              "PeterJ" wrote:

              Note also that while JTA is LGPL, JTS has a separate license and requires a support contract for use in production (at least, that is my understanding).


              Not quite. You can use it without a support licence just as JBossJTA. The dual licence is more for OEMs.

              If anyone wants any more information about the dual licence, I'll create a separate posting.

              • 4. Re: needed: overview of JBoss transaction landscape for noob
                marklittle

                Also check the glossary.

                • 5. Re: needed: overview of JBoss transaction landscape for noob
                  mr_dronski

                   

                  "mark.little@jboss.com" wrote:

                  If anyone wants any more information about the dual licence, I'll create a separate posting.


                  Please do.

                  • 6. Re: needed: overview of JBoss transaction landscape for noob
                    marklittle

                     

                    "PeterJ" wrote:
                    JBoss Transactions is a product that resulted from the technology that was purchased from Arjuna some time ago. JBoss Transactions consists of JTA and JTS implementations.


                    Don't forget about the Web Services transactions component (XTS) :-) Just as JBossTS was the world's first pure Java transaction service, so the core of XTS was also at the heart of the worlds first Web Services transactions implementation. It's also the only open source TM that has demonstrated interoperability with IBM, MSFT et al. So definitely not a component to forget :-)

                    • 7. Re: needed: overview of JBoss transaction landscape for noob
                      kevinpauli

                       

                      "PeterJ" wrote:
                      JBoss AS 4.0.5 and earlier used a prior transaction manager. You can install JBoss Transactions (either the JTA or JTS flavor) into JBoss AS 4.0.3 or higher.


                      Thanks! Can you point me to some docs that tell me how to switch to JTS within JBoss AS?

                      The JBoss Transactions installation guide at
                      http://labs.jboss.com/jbosstm/docs/4.2.3/manuals/pdf/InstallGuide.pdf seems to be assuming a standalone installation (i.e., outside of JBoss AS) so makes no mention of JBoss AS.

                      And the JBoss AS installation guide at http://docs.jboss.com/jbossas/guides/installguide/r1/en/pdf/jboss4-install.pdf makes no mention of JTS!

                      So I'm looking for some kind of document that "bridges the gap" between the two and tells me how to configure JBoss Transactions within JBoss AS.

                      Thanks again for any info you can provide.

                      • 8. Re: needed: overview of JBoss transaction landscape for noob
                        peterj

                        The INSTALL file that comes with JBoss Transactions JTS comes with installations instructions for 4.0.3SP1 - 4.0.5. Sorry, no instructions for installing it with 4.2 (I looked at JTA in 4.2 and it doesn't even have a version number, so I can't even tell if it is 4.2.3 or some hybrid.)

                        • 9. Re: needed: overview of JBoss transaction landscape for noob
                          jhalliday

                          JBossAS 4.2.0 uses TS 4.2.3.SP3 whilst JBossAS 4.2.1 uses TS 4.2.3.SP5. These are the defaults, so no installation instructions are required. Neither has JTS support available at present, as they use a new, incompatible version of JacORB. I'm in the process of testing TS on it and will have a beta of TS 4.4 out shortly for those requiring JTS support in AS 4.2.x

                          • 10. Re: needed: overview of JBoss transaction landscape for noob

                            @jonathan

                            The JTA/JTS distinction is still unclear, and adding in XTS doesn't help, either :)

                            So, as I understand it, JTA is the local transaction management API in the container (e.g. JBoss AS). Once you need to coordinate a transaction across multiple containers, you'll be using JTS, which handles the serialization/synchronization/etc., right? Basically, stepping out of the local transaction context takes you from JTA to JTS, but JTS builds on JTA in that each individual transaction participant that's being coordinated by JTS may be using JTA, right?

                            Alright, so, XTS builds on JTS by supporting distributed transactions across web services, using WS-C, WS-AT, and WS-BA, right?

                            The txbridge stuff that's being worked on for 4.4+ ties the XTS (on JTS) into the local JTA transactions at all ends of the XTS distributed transaction.

                            Am I understanding this right? Sorry for the ditto noob post!

                            Thanks,
                            Brice

                            • 11. Re: needed: overview of JBoss transaction landscape for noob
                              marklittle

                               

                              "ruthbd" wrote:
                              @jonathan

                              The JTA/JTS distinction is still unclear, and adding in XTS doesn't help, either :)


                              Have you read the documentation that ships with TS? Have you read all of the collatoral material on our labs pages? I'd recommend you do so.

                              The summary is:

                              JTA is an API for transaction managers. JTS is the Java language mapping of the OMG's OTS specification. JTS is not tied to JTA.

                              We have an implementation of the OTS/JTS.

                              We have two implementations that conform to the JTA: a purely local JTA (JBossTS (JTA)) which does not support distributed transactions, and a remote JTA that is built on the JTS implementation).


                              So, as I understand it, JTA is the local transaction management API in the container (e.g. JBoss AS). Once you need to coordinate a transaction across multiple containers, you'll be using JTS, which handles the serialization/synchronization/etc., right? Basically, stepping out of the local transaction context takes you from JTA to JTS, but JTS builds on JTA in that each individual transaction participant that's being coordinated by JTS may be using JTA, right?


                              Not quite. JTS knows nothing about JTA. It's a set of interfaces. The JTS implementation also knows nothing about JTA transactions or participants. The distributed JTA implementation builds on the JTS and allows you do have distributed transactions through the JTA. Within an application server, you use the JTA (if you see transactions at all, that is) and if you want distributed transactions then our JTS implementation will be coordinating them for you under the covers.


                              Alright, so, XTS builds on JTS by supporting distributed transactions across web services, using WS-C, WS-AT, and WS-BA, right?


                              No. XTS has no relationship with JTA or JTS. XTS is built on top of the transaction core engine. This is explained in the documentation and the collatoral material.


                              The txbridge stuff that's being worked on for 4.4+ ties the XTS (on JTS) into the local JTA transactions at all ends of the XTS distributed transaction.


                              The transaction bridging gives end-to-end transactions, where a transaction flows from one domain (e.g., JTA) into another (e.g., Web Services) and the transaction needs to span those domains. We will bridge seemlessly between these domains, whatever the implementation. So it could be JTS-to-WST-to-JTA.

                              I've been looking for something to blog about, so I may write something more around this in the next few days. But for now I really recommend the documentation and the collatoral material. We spent 20 writing and building up this library of material, so please check it out ;-)

                              • 12. Re: needed: overview of JBoss transaction landscape for noob
                                jhalliday

                                > The JTA/JTS distinction is still unclear, and adding in XTS doesn't help, either :)

                                We use the term JTA to mean both the API (javax.transaction.*) and the local (single JVM) implementation of that API. The JTS is, as you say, distributed. We allow the JTS to be driven though the same JTA API for convenience, although if you are working in the CORBA (rather than pure JEE) world there different interfaces.

                                XTS (our impl of the WS-TX standards) can be used without working with the JTA API. Our implementation reuses some of the same transaction engine as the JTA implementation, but that's just under the hood stuff users don't need to worry about. XTS is essentially a way of distributing transactions over web services, whilst JTS is a way of distributing them over CORBA RMI/IIOP.

                                txbridge brings the two worlds together, allowing a transaction to flow from web services to JTA (and, in a future version, to flow back the other way too). The implementation of JTA may (eventually) be selectable between the local JTA or the JTS. In the latter case you could wind up with remote propagation of the transaction over web services on some calls and IIOP on others.

                                yep, it's confusing. Something has to keep all those consultants employed :-)

                                • 13. Re: needed: overview of JBoss transaction landscape for noob
                                  adinn

                                  As well as reading the JBoss Transactions docs we provider it might also help to read the specifications for JTA (http://java.sun.com/products/jta) and JTS (http://java.sun.com/products/jts)
                                  The first explains why the JTA (javax/transaction) API provides the various types and operations it contains.
                                  The second explains how the JTS implements the OTS model underneath the same javax.transaction API.

                                  • 14. Re: needed: overview of JBoss transaction landscape for noob

                                     

                                    "jhalliday" wrote:

                                    yep, it's confusing. Something has to keep all those consultants employed :-)


                                    Amen

                                    1 2 Previous Next