0 Replies Latest reply on Oct 8, 2013 2:58 PM by snoack

    DB2 XA datasource issue

    snoack

      I have several non-xa datasources that work in my standalone.xml.  However, I can't seem to find the magic words to get an xa datasource to work.  I have tried a couple different ways of going about it as shown in this snippet from standalone.xml  XADataSource1 is the latest attempt, using xa-datasource-property name=URL.  XADataSource2 represents what I have been trying to use prior to that.

       

                  <datasources>

                      <xa-datasource jndi-name="java:/jdbc/XADataSource1" pool-name="jdbc/db2XADSPool1" enabled="true" use-java-context="true" use-ccm="true">

                          <xa-datasource-property name="DriverType">

                              4

                          </xa-datasource-property>

                          <xa-datasource-property name="URL">

                              jdbc:db2://internal.db2.tst.principal.com:PORT/DBNAME

                          </xa-datasource-property>

                          <xa-datasource-property name="currentSchema">

                              DB2

                          </xa-datasource-property>

                          <xa-datasource-property name="currentFunctionPath">

                              DB2

                          </xa-datasource-property>

                          <xa-datasource-class>com.ibm.db2.jcc.DB2XADataSource</xa-datasource-class>

                          <driver>db2jcc4.jar</driver>

                          <xa-pool>

                              <min-pool-size>10</min-pool-size>

                              <max-pool-size>20</max-pool-size>

                              <prefill>false</prefill>

                              <use-strict-min>false</use-strict-min>

                              <flush-strategy>FailingConnectionOnly</flush-strategy>

                              <is-same-rm-override>true</is-same-rm-override>

                              <no-tx-separate-pools>true</no-tx-separate-pools>

                          </xa-pool>

                          <security>

                              <user-name>MyUserid</user-name>

                              <password>MyPassword</password>

                          </security>

                          <validation>

                              <check-valid-connection-sql>SELECT CURRENT MEMBER FROM SYSIBM.SYSDUMMY1</check-valid-connection-sql>

                          </validation>

                      </xa-datasource>

                      <xa-datasource jndi-name="java:/jdbc/XADataSource2" pool-name="jdbc/db2XADSPool2" enabled="true" use-java-context="true" use-ccm="true">

                          <xa-datasource-property name="DriverType">

                              4

                          </xa-datasource-property>

                          <xa-datasource-property name="PortNumber">

                              PORT

                          </xa-datasource-property>

                          <xa-datasource-property name="DatabaseName">

                              DBNAME

                          </xa-datasource-property>

                          <xa-datasource-property name="ServerName">

                              internal.db2.tst.principal.com

                          </xa-datasource-property>

                          <xa-datasource-property name="currentSchema">

                              DB2

                          </xa-datasource-property>

                          <xa-datasource-property name="currentFunctionPath">

                              DB2

                          </xa-datasource-property>

                          <xa-datasource-class>com.ibm.db2.jcc.DB2XADataSource</xa-datasource-class>

                          <driver>db2jcc4.jar</driver>

                          <xa-pool>

                              <min-pool-size>10</min-pool-size>

                              <max-pool-size>20</max-pool-size>

                              <prefill>false</prefill>

                              <use-strict-min>false</use-strict-min>

                              <flush-strategy>FailingConnectionOnly</flush-strategy>

                              <is-same-rm-override>true</is-same-rm-override>

                              <no-tx-separate-pools>true</no-tx-separate-pools>

                          </xa-pool>

                          <security>

                              <user-name>MyUserid</user-name>

                              <password>MyPassword</password>

                          </security>

                          <validation>

                              <check-valid-connection-sql>SELECT CURRENT MEMBER FROM SYSIBM.SYSDUMMY1</check-valid-connection-sql>

                          </validation>

                      </xa-datasource>

                      <drivers>

                          <driver name="db2jcc4.jar" module="com.ibm.db2">

                              <driver-class>com.ibm.db2.jcc.DB2Driver</driver-class>

                              <xa-datasource-class>com.ibm.db2.jcc.DB2XADataSource</xa-datasource-class>

                          </driver>

                      </drivers>

                  </datasources>

       

      My $JBOSS/modules/com/ibm/db2/main contains

       

      db2jcc.jar              

      db2jcc_javax.jar        

      db2jcc_license_cisuz.jar

      db2jcc_license_cisuz.jar.

      db2jcc_license_cu.jar   

      db2jcc_license_cu.jar.ind

      db2jcc4.jar             

      db2jcc4.jar.index       

      module.xml              

       

      and module.xml contains

       

      <?xml version="1.0" encoding="UTF-8"?>

      <module xmlns="urn:jboss:module:1.0" name="com.ibm.db2">

        <resources>

          <resource-root path="db2jcc4.jar"/>

          <resource-root path="db2jcc_license_cisuz.jar"/>

          <resource-root path="db2jcc_license_cu.jar"/>

        </resources>

        <dependencies>

          <module name="javax.api"/>

          <module name="javax.transaction.api"/>

          <module name="sun.jdk"/>

        </dependencies>

      </module>

       

      In the JBOSS admin console, the xa datasources are there and enabled, but when I try to test the connection, I get:

       

      Unknown error

       

       

      Unexpected HTTP response: 500

       

       

      Request

      {

          "address" => [

              ("subsystem" => "datasources"),

              ("xa-data-source" => "jdbc/db2XADSPool1")

          ],

          "operation" => "test-connection-in-pool"

      }

       

       

      Response

       

       

      Internal Server Error

      {

          "outcome" => "failed",

          "failure-description" => "JBAS010440: failed to invoke operation: JBAS010447: Connection is not valid",

          "rolled-back" => true

      }

       

      and the following in the log:

       

      13:47:11,725 WARN  [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (HttpManagementService-threads - 3) IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: Could not create connection

        at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:447) [ironjacamar-jdbc-1.0.9.Final.jar:1.0.9.Final]

        at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAManagedConnectionFactory.java:385) [ironjacamar-jdbc-1.0.9.Final.jar:1.0.9.Final]

        at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.createConnectionEventListener(SemaphoreArrayListManagedConnectionPool.java:761) [ironjacamar-core-impl-1.0.9.Final.jar:1.0.9.Final]

        at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:343) [ironjacamar-core-impl-1.0.9.Final.jar:1.0.9.Final]

        at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:397) [ironjacamar-core-impl-1.0.9.Final.jar:1.0.9.Final]

        at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:365) [ironjacamar-core-impl-1.0.9.Final.jar:1.0.9.Final]

        at org.jboss.jca.core.connectionmanager.pool.AbstractPool.internalTestConnection(AbstractPool.java:627) [ironjacamar-core-impl-1.0.9.Final.jar:1.0.9.Final]

        at org.jboss.jca.core.connectionmanager.pool.strategy.OnePool.testConnection(OnePool.java:88) [ironjacamar-core-impl-1.0.9.Final.jar:1.0.9.Final]

        at org.jboss.as.connector.pool.PoolOperations$TestConnectionInPool.invokeCommandOn(PoolOperations.java:121) [jboss-as-connector-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.connector.pool.PoolOperations$1.execute(PoolOperations.java:60) [jboss-as-connector-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:385) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:272) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.AbstractOperationContext.completeStep(AbstractOperationContext.java:200) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.connector.pool.PoolOperations.execute(PoolOperations.java:74) [jboss-as-connector-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:385) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:272) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.AbstractOperationContext.completeStep(AbstractOperationContext.java:200) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.ModelControllerImpl$DefaultPrepareStepHandler.execute(ModelControllerImpl.java:466) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:385) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:272) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.AbstractOperationContext.completeStep(AbstractOperationContext.java:200) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:121) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.ModelControllerImpl$1.execute(ModelControllerImpl.java:309) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.controller.ModelControllerImpl$1.execute(ModelControllerImpl.java:299) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]

        at org.jboss.as.domain.http.server.DomainApiHandler.processRequest(DomainApiHandler.java:294)

        at org.jboss.as.domain.http.server.DomainApiHandler.doHandle(DomainApiHandler.java:201)

        at org.jboss.as.domain.http.server.DomainApiHandler.handle(DomainApiHandler.java:208)

        at org.jboss.as.domain.http.server.security.SubjectAssociationHandler.handle(SubjectAssociationHandler.java:51)

        at org.jboss.com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:78)

        at org.jboss.sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:69)

        at org.jboss.com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:81)

        at org.jboss.sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:710)

        at org.jboss.com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:78)

        at org.jboss.as.domain.http.server.RealmReadinessFilter.doFilter(RealmReadinessFilter.java:54)

        at org.jboss.com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:81)

        at org.jboss.sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:682)

        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [rt.jar:1.6.0]

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [rt.jar:1.6.0]

        at java.lang.Thread.run(Thread.java:773) [vm.jar:1.6.0]

        at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.0.0.GA.jar:2.0.0.GA]

      Caused by: java.lang.LinkageError: javax/sql/XAConnection.getXAResource()Ljavax/transaction/xa/XAResource;

        at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.<init>(XAManagedConnection.java:91) [ironjacamar-jdbc-1.0.9.Final.jar:1.0.9.Final]

        at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.newXAManagedConnection(XAManagedConnectionFactory.java:461) [ironjacamar-jdbc-1.0.9.Final.jar:1.0.9.Final]

        at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:434) [ironjacamar-jdbc-1.0.9.Final.jar:1.0.9.Final]

        ... 39 more

       

      Any suggestions as to what the issue may be?  I have non-xa datasources defined for the same DB2 subsystem and they work fine.  Running JBOSS AS 7.1.1.Final under JZOS on z/OS.