4 Replies Latest reply: Jan 31, 2013 5:31 AM by user9130018 RSS

    XA transactions in ATMI java server

    user9130018
      hello

      I've found out that XA support in Java ATMI servers (tuxedo12, patch level004, linux/x86_64) is limited to: ORACLEXA DERBYXA DB2XA SQLSERVERXA MYSQLXA.

      is there a documentation that describes list of Java/XA enabled databases?

      what about informix?

      Exception in thread "Thread-0" TPERMERR(16):0:0:TPED_MINVAL(0):QMNONE(0)::ERROR: Create XA connection with <com.informix.jdbcx.IfxXADataSource:***:jdbc:informix-sqli://***:***/***:INFORMIXSERVER=***...> failure. (The DataSource does not support XA :com.informix.jdbcx.IfxXADataSource)
      at com.oracle.tuxedo.tjatmi.TuxRmJDBC.open(TuxRmJDBC.java:169)
      at com.oracle.tuxedo.tjatmi.TuxRmManager.openRM(TuxRmManager.java:86)

      it looks like hardcoded limit in com.oracle.tuxedo.tjatmi_12.1.1.0.jar
        • 1. Re: XA transactions in ATMI java server
          Todd Little-Oracle
          Hi,

          What driver are you deploying and how are you deploying it? I sincerely doubt we've hard coded the supported XA drivers.

          Regards,
          Todd Little
          Oracle Tuxedo Chief Architect
          • 2. Re: XA transactions in ATMI java server
            user9130018
            xml configuration:

            <ClassPaths>
            <ClassPath>testsrv.jar</ClassPath>
            <ClassPath>/opt/ibm/informix/ids/jdbc/lib/ifxjdbcx.jar</ClassPath>
            <ClassPath>/opt/ibm/informix/ids/jdbc/lib/ifxjdbc.jar</ClassPath>
            </ClassPaths>

            (which is informix driver version: 3.70.JC7, db=informix 11.70fc7 on local machine, database is logged,
            I am able to connect to it through simple jdbc "HelloWorld.java" and C-atmi servers are connecting
            to this database without problem)

            <DataSources>
            <DataSource name="informix">
            <DriverClass>com.informix.jdbcx.IfxXADataSource</DriverClass>
            <JdbcDriverParams>
            <ConnectionUrl>jdbc:informix-sqli://***:***/***:INFORMIXSERVER=***...</ConnectionUrl>
            </JdbcDriverParams>
            </DataSource>
            </DataSources>

            java server starts and runs fine when it is not in group with resource manager. when I move it to
            the informix group I get:

            at com.oracle.tuxedo.tjatmi.TuxRmJDBC.open(TuxRmJDBC.java:169)
            at com.oracle.tuxedo.tjatmi.TuxRmManager.openRM(TuxRmManager.java:86)

            and exception with message "The DataSource does not support XA". the question is: where does this message come from?

            the java server does not make any contact to database (found that using network spy tool = no data
            to/from informix listen port)

            trace:

            094443.louise!TMJAVASVR.3981.2414987040.0: 01-28-2013: Tuxedo Version 12.1.1.0, 64-bit
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:tr: trace("*:ulog:dye")
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:tr: dye
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:tr: trace("*:ulog:dye")
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:tr: dye
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:tr: trace("*:ulog:dye")
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:tr: dye
            094443.louise!TMJAVASVR.3981.2414987040.0: LIBTUX_CAT:262: INFO: Standard main starting
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:ia: { tpsvrinit(17, "TMJAVASVR -C dom=whatever -g 300 -i 1500 -u louise -U /home/tuxdev/tuxwhatever/ulog/ulog -m 0 -r -- -c jtest.xml")
            094443.louise!TMJAVASVR.3981.2414987040.0: TUXJ_CAT:150: INFO: "/home/tuxdev/tuxwhatever/app/exe/jtest.xml" is used as the configuration file for current TMJAVASVR.
            094443.louise!TMJAVASVR.3981.2414987040.0: TUXJ_CAT:120: INFO: "/opt/oracle/tuxedo/tuxedo12.1.1.0/udataobj/tuxj/TJSconfig.xsd" is used as the schema file for the configuration file "/home/tuxdev/tuxwhatever/app/exe/jtest.xml" for current TMJAVASVR.
            094443.louise!TMJAVASVR.3981.2414987040.0: TUXJ_CAT:144: INFO: XA support enabled.
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:ia: { tpadvertise("testperf1", 0x0x4047f2)
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:ia: } tpadvertise = 1 [tperrno TPENOENT]
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:ia: { tpadvertise("testperf2", 0x0x4047f2)
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:ia: } tpadvertise = 1 [tperrno TPENOENT]
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:ia: { tpadvertise("testsvc1", 0x0x4047f2)
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:ia: } tpadvertise = 1 [tperrno TPENOENT]
            094443.louise!TMJAVASVR.3981.2414987040.0: TUXJ_CAT:140: INFO: Total 3 services are advertised.
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:ia: { tpadvertise("..TJSADM_300_1500", 0x0x403f88)
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:ia: } tpadvertise = 1 [tperrno TPENOENT]
            094443.louise!TMJAVASVR.3981.2414987040.0: TRACE:ia: } tpsvrinit = 0 [tperrno TPENOENT]
            094443.louise!TMJAVASVR.3981.2252502784.-2: TRACE:ia: { tpsetctxt(1, 0x0)
            094443.louise!TMJAVASVR.3981.2252502784.1: TRACE:tr: trace("*:ulog:dye")
            094443.louise!TMJAVASVR.3981.2252502784.1: TRACE:tr: dye
            094443.louise!TMJAVASVR.3981.2252502784.1: TRACE:ia: } tpsetctxt = 0
            094443.louise!TMJAVASVR.3981.2252502784.1: LIBTUX_CAT:6126: INFO: New server dispatched thread starting
            094443.louise!TMJAVASVR.3981.2244110080.-2: TRACE:ia: { tpsetctxt(2, 0x0)
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:tr: trace("*:ulog:dye")
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:tr: dye
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:ia: } tpsetctxt = 0
            094443.louise!TMJAVASVR.3981.2244110080.2: LIBTUX_CAT:6126: INFO: New server dispatched thread starting
            094443.louise!TMJAVASVR.3981.2252502784.1: TRACE:ia: { tpopen()
            094443.louise!TMJAVASVR.3981.2252502784.1: TRACE:xa: { xa_open(0x0x1c21e90, 0, 0x0)
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:ia: { tpopen()
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:xa: { xa_open(0x0x1c3c990, 0, 0x0)
            094443.louise!TMJAVASVR.3981.2252502784.1: TUXJ_CAT:362: Open XAResource Result "ERROR: Create XA connection with <com.informix.jdbcx.IfxXADataSource:whatever:jdbc:informix-sqli://***:> failure. (The DataSource does not support XA :com.informix.jdbcx.IfxXADataSource)".
            094443.louise!TMJAVASVR.3981.2252502784.1: TRACE:xa: } xa_open = -3
            094443.louise!TMJAVASVR.3981.2244110080.2: TUXJ_CAT:362: Open XAResource Result "ERROR: Create XA connection with <com.informix.jdbcx.IfxXADataSource:whatever:jdbc:informix-sqli://***:> failure. (The DataSource does not support XA :com.informix.jdbcx.IfxXADataSource)".
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:xa: } xa_open = -3
            094443.louise!TMJAVASVR.3981.2252502784.1: LIBTUX_CAT:466: ERROR: tpopen TPERMERR xa_open returned XAER_RMERR
            094443.louise!TMJAVASVR.3981.2252502784.1: TRACE:ia: } tpopen = -1 [tperrno TPERMERR]
            094443.louise!TMJAVASVR.3981.2252502784.1: TUXJ_CAT:142: ERROR: Failed to open resource manager.
            094443.louise!TMJAVASVR.3981.2244110080.2: LIBTUX_CAT:466: ERROR: tpopen TPERMERR xa_open returned XAER_RMERR
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:ia: } tpopen = -1 [tperrno TPERMERR]
            094443.louise!TMJAVASVR.3981.2244110080.2: TUXJ_CAT:142: ERROR: Failed to open resource manager.
            094443.louise!TMJAVASVR.3981.2252502784.1: LIBTUX_CAT:6256: ERROR: tpsvrthrinit() failed
            094443.louise!TMJAVASVR.3981.2252502784.1: TRACE:ia: { tpclose()
            094443.louise!TMJAVASVR.3981.2252502784.1: TRACE:ia: } tpclose = 1
            094443.louise!TMJAVASVR.3981.2244110080.2: LIBTUX_CAT:6256: ERROR: tpsvrthrinit() failed
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:ia: { tpunadvertise("testperf1")
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:ia: } tpunadvertise = 1
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:ia: { tpunadvertise("testperf2")
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:ia: } tpunadvertise = 1
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:ia: { tpunadvertise("testsvc1")
            094443.louise!TMJAVASVR.3981.2244110080.2: TRACE:ia: } tpunadvertise = 1

            your JDBCConnectionParam.getDataSourceType_internal has hardcoded db names and there is no informix there so it
            becomes TuxConstants.DataSourceType.OTHER

            eventually JDBCConnectionParam.supportXA method called on this object returns true only for hardcoded values (and
            'false' for DataSourceType.OTHER). when it returns false TuxConnectionManager.java throws exceptiona that ends
            with XAER_RMERR
            • 3. Re: XA transactions in ATMI java server
              Szhu-Oracle
              Tuxedo doesn't support Informix database for java server by now. However, we are considering to support it in next release.
              • 4. Re: XA transactions in ATMI java server
                user9130018
                Hello

                thanks for answering but statement from manual "The Tuxedo Java-based transaction is implemented based on the existing Tuxedo transaction management framework" and "Java-implemented services can only connect the database with JDBC connection" sounds like "we support databases that are XA compliant and have XA compliant jdbc datasources". instead of this it acctually means: "we support arbitrary selected, hidden list of databases" and may confuse people

                btw: I changed informix driver class to: jdbctest.FakeDB2XADataSource (extending real driver) and added UID=<user>,PWD=<pass> to jdbc url and it recognized informix as valid xa comliant db2 database :) but later JVM crashed in xa_open...