IBM CICS Resource adapter downgrades from XA to LocalTransaction datasource in JBoss
Environment
- Red Hat JBoss Enterprise Application Platform 6.3.3
- IBM CICS 7.5.0.4-p750-004-140807
Issue
- An XA capable resource adapter is treated as a local transaction datasource as evidenced by
WARN [com.arjuna.ats.arjuna] (default-threads - 46) ARJUNA012140: Adding multiple last resources is disallowed. Trying to add LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@<#>[connectionListener=<#> connectionManager=<#> warned=false currentXid=< formatId=<id>, gtrid_length=<n>, bqual_length=<n>, tx_uid=<tx_id>, node_name=1, branch_uid=<branch id>, subordinatenodename=null, eis_name=java:/jdbc/<ds name> > productName=<product> productVersion=<version> jndiName=java:/jdbc/<jndi name>])), but already have LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@<#>[connectionListener=<#> connectionManager=<#> warned=false currentXid=< formatId=<#>, gtrid_length=<#>, bqual_length=<#>, tx_uid=<tx id>, node_name=1, branch_uid=<branch id>, subordinatenodename=null, eis_name=java:/eis/<name> > productName=<product> productVersion=unknown jndiName=java:/eis/<jndi name]))
Resolution
The config-property <config-property name="xaSupport">off</config-property>
should be over-ridden in the deployment descriptor (using on
). Notice that by default it is off
:
<resource-adapters>
<resource-adapter>
<archive>cicseci.rar</archive>
<transaction-support>XATransaction</transaction-support>
<connection-definitions>
<connection-definition class-name="com.ibm.connector2.cics.ECIManagedConnectionFactory" connectable="false" enabled="true" enlistment="true" jndi-name="java:jboss/eis/Connection" pool-name="Connection" sharable="true" use-ccm="true" use-java-context="true">
<config-property name="TPNName"/>
<config-property name="keyRingClass"/>
<config-property name="requestExits"/>
<config-property name="serverName"/>
<config-property name="clientSecurity"/>
<config-property name="portNumber"/>
<config-property name="tranName"/>
<config-property name="password"/>
<config-property name="TranName"/>
<config-property name="SocketConnectTimeout">0</config-property>
<config-property name="ConnectionURL">local:</config-property>
<config-property name="connectionURL">local:</config-property>
<config-property name="serverSecurity"/>
<config-property name="tPNName"/>
<config-property name="CipherSuites"/>
<config-property name="Password"/>
<config-property name="applid"/>
<config-property name="UserName"/>
<config-property name="socketConnectTimeout"/>
<config-property name="RequestExits"/>
<config-property name="ClientSecurity"/>
<config-property name="KeyRingPassword"/>
<config-property name="userName"/>
<config-property name="traceLevel"/>
<config-property name="Applid"/>
<config-property name="ApplidQualifier"/>
<config-property name="cipherSuites"/>
<config-property name="ServerName"/>
<config-property name="xaSupport">off</config-property>
<config-property name="applidQualifier"/>
<config-property name="keyRingPassword"/>
<config-property name="TraceLevel">1</config-property>
<config-property name="PortNumber">2006</config-property>
<config-property name="ServerSecurity"/>
<config-property name="KeyRingClass"/>
<xa-pool>
<min-pool-size>0</min-pool-size>
<max-pool-size>10</max-pool-size>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
<pad-xid>false</pad-xid>
<wrap-xa-resource>true</wrap-xa-resource>
</xa-pool>
<security>
<application/>
</security>
<recovery no-recovery="false">
<recover-credential>
<user-name>user</user-name>
<password>password</password>
</recover-credential>
</recovery>
</connection-definition>
</connection-definitions>
</resource-adapter>
</resource-adapters>
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments