Support Article

Getting IllegalResourceIn2PCTransactionException after upgrade

SA-29813

Summary



User is upgrading their PRPC application from PRPC 6.2 SP2 to Pega 7.2.

After the migration and upgrade, while starting the JVM, user is getting the error listed below.



Error Messages



[10/11/16 11:49:26:168 EDT] 0000001e LocalTransact E J2CA0030E: Method enlist caught com.ibm.ws.Transaction.IllegalResourceIn2PCTransactionException: Illegal attempt to enlist multiple 1PC XAResources
at com.ibm.ws.tx.jta.RegisteredResources.enlistResource(RegisteredResources.java:871)
at com.ibm.ws.tx.jta.TransactionImpl.enlistResource(TransactionImpl.java:1849)
at com.ibm.tx.jta.impl.EmbeddableTranManagerSet.enlistOnePhase(EmbeddableTranManagerSet.java:195)
at com.ibm.ejs.j2c.LocalTransactionWrapper.enlist(LocalTransactionWrapper.java:607)
at com.ibm.ejs.j2c.ConnectionManager.lazyEnlist(ConnectionManager.java:2755)
at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.lazyEnlist(WSRdbManagedConnectionImpl.java:2596)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.beginTransactionIfNecessary(WSJdbcConnection.java:732)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2786)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:2739)
at com.pega.pegarules.data.internal.access.DatabaseConnectionImpl.prepareStatement(DatabaseConnectionImpl.java:537)
at com.pega.pegarules.data.internal.access.ConnectionStatementStore.prepareStatement(ConnectionStatementStore.java:115)
at com.pega.pegarules.data.internal.access.Saver.getStatementWithPrepValues(Saver.java:1694)
at com.pega.pegarules.data.internal.access.Saver.addBatch(Saver.java:975)
at com.pega.pegarules.data.internal.access.Saver.saveInstance(Saver.java:837)
at com.pega.pegarules.data.internal.access.Saver.saveInstance(Saver.java:777)
at com.pega.pegarules.data.internal.access.Committer.performOps(Committer.java:373)
at com.pega.pegarules.data.internal.access.DatabaseImpl.attemptToProcessUpdates(DatabaseImpl.java:2751)
at com.pega.pegarules.data.internal.access.DatabaseImpl.processUpdates(DatabaseImpl.java:2400)
at com.pega.pegarules.data.internal.access.Saver.save(Saver.java:651)
at com.pega.pegarules.data.internal.access.DatabaseImpl.save(DatabaseImpl.java:5192)
at com.pega.pegarules.data.internal.access.DatabaseImpl.save(DatabaseImpl.java:5178)
at com.pega.pegarules.data.internal.access.DatabaseImpl.save(DatabaseImpl.java:5169)
at com.pega.pegarules.session.internal.async.AgentRuleUtils.saveDataInstance(AgentRuleUtils.java:225)
at com.pega.pegarules.session.internal.async.AgentRuleUtils.checkAndUseDataInstance(AgentRuleUtils.java:287)
at com.pega.pegarules.session.internal.async.MasterForNewAgents.manageSchedules(MasterForNewAgents.java:375)
at com.pega.pegarules.session.internal.async.MasterForNewAgents.run(MasterForNewAgents.java:287)
at com.pega.pegarules.session.internal.async.Agent.runAgentTask(Agent.java:913)
......


Steps to Reproduce



Not applicable


Root Cause



A defect or configuration issue in the operating environment.

​User has a Data-Admin-DB-Name defined as jdbc/PegaRULES manually and Websphere considers that as another resource in addition to the default OOTB java:com/env/jdbc/PegaRULES and hence the exception because a non-XA jdbc driver is used.

Resolution



Make the following change to the operating environment: 

Remove the Data-Admin-DB-Name with JNDI name of jdbc/PegaRULES and redeploy the application.

Published October 31, 2016 - Updated November 10, 2016

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.