This discussion is archived
4 Replies Latest reply: Jan 31, 2013 3:31 AM by user9130018 RSS

XA transactions in ATMI java server

user9130018 Newbie
Currently Being Moderated
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 Expert
    Currently Being Moderated
    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 Newbie
    Currently Being Moderated
    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
    763823 Newbie
    Currently Being Moderated
    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 Newbie
    Currently Being Moderated
    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...

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points