6 Replies Latest reply on Apr 27, 2009 8:52 AM by Tom Jenkinson

    architecture questions

    Juergen Weber Newbie

      It's very exciting to see that now there is an Open Source XATMI implementation for C. Congratulations to the Blacktie Team!

      Still a few guesses and questions to understand its architecture (do you have some graphics explaining the architecture?):

      The BarService sample is xatmi based, but browsing the sources (atmibroker-tx/src/main/cpp/AtmiBrokerOTS.cxx) it looks like Blacktie is also a Corba OTS implementation using the TAO ORB?
      Is the BarService technically a TAO servant?

      The EJB connector is a Corba Client to the C++ Corba Service using JacORBs nameservice? (In a production environment it would be nice to use corbaloc, to not need a nameservice process.)
      Will there be a JCA-based connector, too (to better integrate the connector in an application servers thread management)?

      To do anything useful with a TXMgr you need databases. How will the Resource manager implement control of Resources? Do you have to link database libraries against the servants as with Tuxedo?
      Will you give an example using databases?

      Thanks very much,
      Juergen

        • 1. Re: architecture questions
          Tom Jenkinson Master

          Hi Juergen,

          Thanks for your posting! I agree, this is a very exciting time for XATMI as we hope to open this up for the community.

          In terms of artifacts relating to the architecture of the system, unfortunately we do not have anything that is in a form able to be posted online at the moment although we are currently working on formatting our existing designs for the community in the near future (pre our official community release).

          Basically though, you can look upon BlackTie as an adapter for accessing existing JBoss infrastructure from C/C++. Here I am thinking of your observations on AtmiBrokerOTS.

          AtmiBrokerOTS (and supporting files) is a c client library to access the JBoss Transactions component of JBoss AS.

          Currently the name service is a required component of a deployment topology, however we can certainly look at using other mechanisms for IOR sharing.

          The Java side of things (JAB and EJB connector) is still somewhat a moving ground, depending upon feedback from the community we may look at replacing/augmenting them with a JCA connector or similar...

          Hope this helps,
          Tom

          • 2. Re: architecture questions
            Juergen Weber Newbie

            Thanks for your replies.

            "tomjenkinson" wrote:

            Basically though, you can look upon BlackTie as an adapter for accessing existing JBoss infrastructure from C/C++. Here I am thinking of your observations on AtmiBrokerOTS.

            AtmiBrokerOTS (and supporting files) is a c client library to access the JBoss Transactions component of JBoss AS.

            So, it is not useable without JBoss? I hoped, it would be a stand-alone OTS Service implementation. But the XATMI implementation can be used stand-alone, does it? At least it should to be used as drop-in replacement for Tuxedo.


            Have you information concerning the usage of databases? What is needed to manage a database Resource?

            Thanks very much,
            Juergen



            • 3. Re: architecture questions
              Mark Little Master

              JBossTS is a stand-alone transaction manager and supports OTS 1.4.

              • 4. Re: architecture questions
                Tom Jenkinson Master

                Hi Juergen,

                Just to follow up on Marks post. The deployment model we are looking at supports a standalone configuration with the transaction manager and (currently) the naming service as a sort of minimum (along with the XATMI components).

                However, for ease of use we also support accessing the transaction manager and naming service when they are embedded in the application server.

                The XATMI components are packaged as DLL/SO files so can be used standalone (there is a tool to help you include these in your executables), however for ease of administration we are also looking at creating a new deployment artifact that could also be deployed onto the application server (you may have seen the post in the forums about this).

                Let me set your mind at rest, we have designed the framework to ensure that we can run in limited capacity environments here!

                Tom

                • 5. Re: architecture questions
                  Michael Musgrove Master

                   

                  To do anything useful with a TXMgr you need databases. How will the Resource manager implement control of Resources? Do you have to link database libraries against the servants as with Tuxedo?
                  Will you give an example using databases?

                  Each XA compliant database must export a symbol that implements xa_switch_t as per the X/Open XA spec. Put that symbol name and the library that contains it in the <XA_RESOURCES> section of Environment.xml file that goes with your application. For example, if your RM is berkeley DB:

                  - <XA_RESOURCE>
                  - <XA_RESOURCE_MGR_ID>101</XA_RESOURCE_MGR_ID>
                  - <XA_RESOURCE_NAME>BerkeleyDB</XA_RESOURCE_NAME>
                  - <XA_OPEN_STRING></XA_OPEN_STRING>
                  - <XA_CLOSE_STRING></XA_CLOSE_STRING>
                  - <XA_SWITCH>db_xa_switch</XA_SWITCH>
                  - <XA_LIB_NAME>/usr/local/BerkeleyDB.4.7/lib/libdb.so</XA_LIB_NAME>
                  - </XA_RESOURCE>


                  We had that example in the atmibroker-tx tests working on linux but I removed it before M3 went out because the dl_sym stuff didn't work on Windows. It will be back in again for M4.

                  The way this stuff integrates with our external transaction manager (TM) is to create a CosTransactions::Resource proxy for the RM. This is then enlisted in the current transaction via the external TM (which knows about OTS). Our code then does the appropriate XA calls to the RM when the TM goes through its 2PC protocol.

                  • 6. Re: architecture questions
                    Tom Jenkinson Master

                    Hi Juergen,

                    Just as a follow up to your initial query around diagrams for the architecture, you will be happy to find that I have uploaded some pages to the wiki (try starting at page: http://www.jboss.org/community/docs/DOC-13607 and following the links at the bottom of this page).

                    Hope this helps!
                    Tom