jboss 3.2 XA datasource using a BMP entity bean
dvos2002 Dec 17, 2003 8:24 AMHi,
I am trying to set up an entity bean that uses XA for a dataconnection. For generating the configuration I use XDoclets. I have copied the oracle-xa-ds.xml file to my deploy directory and changed the next lines
<xa-datasource-property name="URL">jdbc:oracle:thin:@MYHOST:1521:MYDBNAME</xa-datasource-property> <xa-datasource-property name="User">douwe</xa-datasource-property> <xa-datasource-property name="Password">douwespassword</xa-datasource-property>
the generated ejb-xml file
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar > <description>[CDATA[No Description.]]</description> <display-name>Generated by XDoclet</display-name> <enterprise-beans> <!-- Session Beans --> <session > <description>[CDATA[EJB That does something]]</description> <display-name>Stupid EJB</display-name> <ejb-name>Stupid</ejb-name> <home>com.dus.beantest.interfaces.StupidHome</home> <remote>com.dus.beantest.interfaces.Stupid</remote> <ejb-class>com.dus.beantest.ejb.StupidBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> <session > <description>[CDATA[EJB That does something]]</description> <display-name>Transaction EJB</display-name> <ejb-name>Transaction</ejb-name> <home>com.dus.beantest.interfaces.TransactionHome</home> <remote>com.dus.beantest.interfaces.Transaction</remote> <ejb-class>com.dus.beantest.ejb.TransactionBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> <!-- To add session beans that you have deployment descriptor info for, add a file to your XDoclet merge directory called session-beans.xml that contains the <session></session> markup for those beans. --> <!-- Entity Beans --> <entity > <description>[CDATA[]]</description> <ejb-name>StupidDBBean</ejb-name> <home>com.dus.beantest.interfaces.StupidDBBeanHome</home> <remote>com.dus.beantest.interfaces.StupidDBBean</remote> <ejb-class>com.dus.beantest.ejb.StupidDBBeanBMP</ejb-class> <persistence-type>Bean</persistence-type> <prim-key-class>com.dus.beantest.ejb.StupidDBBeanPK</prim-key-class> <reentrant>False</reentrant> <resource-ref > <res-ref-name>DouwesResourceRef</res-ref-name> <res-type>javax.sql.XADatasource</res-type> <res-auth>Application</res-auth> </resource-ref> </entity> <!-- To add entity beans that you have deployment descriptor info for, add a file to your XDoclet merge directory called entity-beans.xml that contains the <entity></entity> markup for those beans. --> <!-- Message Driven Beans --> <!-- To add message driven beans that you have deployment descriptor info for, add a file to your XDoclet merge directory called message-driven-beans.xml that contains the <message-driven></message-driven> markup for those beans. --> </enterprise-beans> <!-- Relationships --> <!-- Assembly Descriptor --> <assembly-descriptor > <!-- To add additional assembly descriptor info here, add a file to your XDoclet merge directory called assembly-descriptor.xml that contains the <assembly-descriptor></assembly-descriptor> markup. --> <!-- finder permissions --> <!-- finder permissions --> <!-- finder permissions --> <!-- transactions --> <!-- finder transactions --> </assembly-descriptor> </ejb-jar>
the generated jboss.xml file
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd"> <jboss> <enterprise-beans> <!-- To add beans that you have deployment descriptor info for, add a file to your XDoclet merge directory called jboss-beans.xml that contains the <session></session>, <entity></entity> and <message-driven></message-driven> markup for those beans. --> <entity> <ejb-name>StupidDBBean</ejb-name> <jndi-name>StupidDBBean</jndi-name> <resource-ref> <res-ref-name>DouwesResourceRef</res-ref-name> <jndi-name>jdbc/XAOracleDS</jndi-name> </resource-ref> <method-attributes> </method-attributes> </entity> <session> <ejb-name>Stupid</ejb-name> <jndi-name>ejb/beantest/Stupid</jndi-name> <method-attributes> </method-attributes> </session> <session> <ejb-name>Transaction</ejb-name> <jndi-name>ejb/beantest/Transaction</jndi-name> <method-attributes> </method-attributes> </session> </enterprise-beans> <resource-managers> <resource-manager> <res-name>ResManagerName</res-name> <res-jndi-name>ResManJndiName</res-jndi-name> </resource-manager> </resource-managers> </jboss>
The datasource appears to be accepted by JBoss:
10:14:15,653 INFO [MainDeployer] Starting deployment of package: file:/C:/jboss-3.2.2/server/default/deploy/oracle-xa-ds.xml 10:14:15,843 INFO [RARDeployment] Started jboss.jca:service=ManagedConnectionFactory,name=XAOracleDS 10:14:15,863 INFO [JBossManagedConnectionPool] Started jboss.jca:service=ManagedConnectionPool,name=XAOracleDS 10:14:15,923 INFO [OracleXAExceptionFormatter] Started jboss.jca:service=OracleXAExceptionFormatter 10:14:15,943 INFO [MainDeployer] Deployed package: file:/C:/jboss-3.2.2/server/default/deploy/oracle-xa-ds.xml
Unfortunately (for me) when trying to invoke the methods on the BMP entity bean I get an XAException:
14:32:21,811 WARN [TransactionImpl] XAException: tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=vw-5897//19, BranchQual=] errorCode=XAER_RMERR oracle.jdbc.xa.OracleXAException at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1159) at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:311) at org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.start(XAManagedConnection.java:142) at org.jboss.tm.TransactionImpl.startResource(TransactionImpl.java:1144) at org.jboss.tm.TransactionImpl.enlistResource(TransactionImpl.java:632) at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.enlist(TxConnectionManager.java:443) at org.jboss.resource.connectionmanager.TxConnectionManager.managedConnectionReconnected(TxConnectionManager.java:343) at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:483) at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:814) at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:102) at com.dus.beantest.ejb.StupidDBDAOImpl.store(StupidDBDAOImpl.java:85) at com.dus.beantest.ejb.StupidDBBeanBMP.ejbStore(StupidDBBeanBMP.java:116) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.ejb.plugins.BMPPersistenceManager.storeEntity(BMPPersistenceManager.java:454) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.storeEntity(CachedConnectionInterceptor.java:387) at org.jboss.ejb.EntityContainer.storeEntity(EntityContainer.java:713) at org.jboss.ejb.GlobalTxEntityMap.synchronizeEntities(GlobalTxEntityMap.java:149) at org.jboss.ejb.GlobalTxEntityMap$GlobalTxEntityMapSynchronize.beforeCompletion(GlobalTxEntityMap.java:215) at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1304) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:343) at org.jboss.tm.TxManager.commit(TxManager.java:141) at org.jboss.tm.usertx.server.UserTransactionSessionImpl.commit(UserTransactionSessionImpl.java:165) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.tm.usertx.server.ClientUserTransactionService.invoke(ClientUserTransactionService.java:107) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367) at java.lang.reflect.Method.invoke(Native Method) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) at sun.rmi.transport.Transport$1.run(Transport.java:147) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:143) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:479) 14:32:22,221 WARN [TransactionImpl] xa error: -3 (A resource manager error hasoccured in the transaction branch.); oracle error: 6550; oracle sql error: 0; oracle.jdbc.xa.OracleXAException at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1159) at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:311) at org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.start(XAManagedConnection.java:142) at org.jboss.tm.TransactionImpl.startResource(TransactionImpl.java:1144) at org.jboss.tm.TransactionImpl.enlistResource(TransactionImpl.java:632) at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.enlist(TxConnectionManager.java:443) at org.jboss.resource.connectionmanager.TxConnectionManager.managedConnectionReconnected(TxConnectionManager.java:343) at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:483) at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:814) at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:102) at com.dus.beantest.ejb.StupidDBDAOImpl.store(StupidDBDAOImpl.java:85) at com.dus.beantest.ejb.StupidDBBeanBMP.ejbStore(StupidDBBeanBMP.java:116) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.ejb.plugins.BMPPersistenceManager.storeEntity(BMPPersistenceManager.java:454) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.storeEntity(CachedConnectionInterceptor.java:387) at org.jboss.ejb.EntityContainer.storeEntity(EntityContainer.java:713) at org.jboss.ejb.GlobalTxEntityMap.synchronizeEntities(GlobalTxEntityMap.java:149) at org.jboss.ejb.GlobalTxEntityMap$GlobalTxEntityMapSynchronize.beforeCompletion(GlobalTxEntityMap.java:215) at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1304) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:343) at org.jboss.tm.TxManager.commit(TxManager.java:141) at org.jboss.tm.usertx.server.UserTransactionSessionImpl.commit(UserTransactionSessionImpl.java:165) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.tm.usertx.server.ClientUserTransactionService.invoke(ClientUserTransactionService.java:107) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367) at java.lang.reflect.Method.invoke(Native Method) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) at sun.rmi.transport.Transport$1.run(Transport.java:147) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:143) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:479) 14:32:22,582 INFO [TxConnectionManager] Could not enlist in transaction on entering meta-aware object! javax.transaction.SystemException: enlistResource failed at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.enlist(TxConnectionManager.java:456) at org.jboss.resource.connectionmanager.TxConnectionManager.managedConnectionReconnected(TxConnectionManager.java:343) at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:483) at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:814) at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:102) at com.dus.beantest.ejb.StupidDBDAOImpl.store(StupidDBDAOImpl.java:85) at com.dus.beantest.ejb.StupidDBBeanBMP.ejbStore(StupidDBBeanBMP.java:116) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.ejb.plugins.BMPPersistenceManager.storeEntity(BMPPersistenceManager.java:454) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.storeEntity(CachedConnectionInterceptor.java:387) at org.jboss.ejb.EntityContainer.storeEntity(EntityContainer.java:713) at org.jboss.ejb.GlobalTxEntityMap.synchronizeEntities(GlobalTxEntityMap.java:149) at org.jboss.ejb.GlobalTxEntityMap$GlobalTxEntityMapSynchronize.beforeCompletion(GlobalTxEntityMap.java:215) at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1304) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:343) at org.jboss.tm.TxManager.commit(TxManager.java:141) at org.jboss.tm.usertx.server.UserTransactionSessionImpl.commit(UserTransactionSessionImpl.java:165) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.tm.usertx.server.ClientUserTransactionService.invoke(ClientUserTransactionService.java:107) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367) at java.lang.reflect.Method.invoke(Native Method) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) at sun.rmi.transport.Transport$1.run(Transport.java:147) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:143) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:479) 14:32:22,902 ERROR [STDERR] org.jboss.util.NestedSQLException: Could not enlist in transaction on entering meta-aware object!javax.transaction.SystemException: enlistResource failed; - nested throwable: (javax.resource.ResourceException: Could not enlist in transaction on entering meta-aware object!javax.transaction.SystemException: enlistResource failed) 14:32:22,932 ERROR [STDERR] at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:106) 14:32:22,942 ERROR [STDERR] at com.dus.beantest.ejb.StupidDBDAOImpl.store(StupidDBDAOImpl.java:85) 14:32:22,952 ERROR [STDERR] at com.dus.beantest.ejb.StupidDBBeanBMP.ejbStore(StupidDBBeanBMP.java:116) 14:32:22,972 ERROR [STDERR] at java.lang.reflect.Method.invoke(Native Method) 14:32:22,982 ERROR [STDERR] at org.jboss.ejb.plugins.BMPPersistenceManager.storeEntity(BMPPersistenceManager.java:454) 14:32:22,992 ERROR [STDERR] at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.storeEntity(CachedConnectionInterceptor.java:387) 14:32:23,002 ERROR [STDERR] at org.jboss.ejb.EntityContainer.storeEntity(EntityContainer.java:713) 14:32:23,022 ERROR [STDERR] at org.jboss.ejb.GlobalTxEntityMap.synchronizeEntities(GlobalTxEntityMap.java:149) 14:32:23,032 ERROR [STDERR] at org.jboss.ejb.GlobalTxEntityMap$GlobalTxEntityMapSynchronize.beforeCompletion(GlobalTxEntityMap.java:215) 14:32:23,043 ERROR [STDERR] at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1304) 14:32:23,053 ERROR [STDERR] at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:343) 14:32:23,073 ERROR [STDERR] at org.jboss.tm.TxManager.commit(TxManager.java:141) 14:32:23,083 ERROR [STDERR] at org.jboss.tm.usertx.server.UserTransactionSessionImpl.commit(UserTransactionSessionImpl.java:165) 14:32:23,093 ERROR [STDERR] at java.lang.reflect.Method.invoke(Native Method) 14:32:23,113 ERROR [STDERR] at org.jboss.tm.usertx.server.ClientUserTransactionService.invoke(ClientUserTransactionService.java:107) 14:32:23,123 ERROR [STDERR] at java.lang.reflect.Method.invoke(Native Method) 14:32:23,133 ERROR [STDERR] at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) 14:32:23,153 ERROR [STDERR] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) 14:32:23,163 ERROR [STDERR] at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367) 14:32:23,173 ERROR [STDERR] at java.lang.reflect.Method.invoke(Native Method) 14:32:23,183 ERROR [STDERR] at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) 14:32:23,203 ERROR [STDERR] at sun.rmi.transport.Transport$1.run(Transport.java:147) 14:32:23,213 ERROR [STDERR] at java.security.AccessController.doPrivileged(Native Method) 14:32:23,223 ERROR [STDERR] at sun.rmi.transport.Transport.serviceCall(Transport.java:143) 14:32:23,233 ERROR [STDERR] at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) 14:32:23,253 ERROR [STDERR] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) 14:32:23,263 ERROR [STDERR] at java.lang.Thread.run(Thread.java:479) 14:32:23,273 ERROR [STDERR] + nested throwable: 14:32:23,273 ERROR [STDERR] javax.resource.ResourceException: Could not enlist in transaction on entering meta-aware object!javax.transaction.SystemException: enlistResource failed 14:32:23,293 ERROR [STDERR] at org.jboss.resource.connectionmanager.TxConnectionManager.managedConnectionReconnected(TxConnectionManager.java:348) 14:32:23,313 ERROR [STDERR] at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:483) 14:32:23,323 ERROR [STDERR] at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:814) 14:32:23,343 ERROR [STDERR] at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:102) 14:32:23,353 ERROR [STDERR] at com.dus.beantest.ejb.StupidDBDAOImpl.store(StupidDBDAOImpl.java:85) 14:32:23,363 ERROR [STDERR] at com.dus.beantest.ejb.StupidDBBeanBMP.ejbStore(StupidDBBeanBMP.java:116) 14:32:23,383 ERROR [STDERR] at java.lang.reflect.Method.invoke(Native Method) 14:32:23,393 ERROR [STDERR] at org.jboss.ejb.plugins.BMPPersistenceManager.storeEntity(BMPPersistenceManager.java:454) 14:32:23,403 ERROR [STDERR] at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.storeEntity(CachedConnectionInterceptor.java:387) 14:32:23,413 ERROR [STDERR] at org.jboss.ejb.EntityContainer.storeEntity(EntityContainer.java:713) 14:32:23,433 ERROR [STDERR] at org.jboss.ejb.GlobalTxEntityMap.synchronizeEntities(GlobalTxEntityMap.java:149) 14:32:23,443 ERROR [STDERR] at org.jboss.ejb.GlobalTxEntityMap$GlobalTxEntityMapSynchronize.beforeCompletion(GlobalTxEntityMap.java:215) 14:32:23,453 ERROR [STDERR] at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1304) 14:32:23,473 ERROR [STDERR] at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:343) 14:32:23,483 ERROR [STDERR] at org.jboss.tm.TxManager.commit(TxManager.java:141) 14:32:23,493 ERROR [STDERR] at org.jboss.tm.usertx.server.UserTransactionSessionImpl.commit(UserTransactionSessionImpl.java:165) 14:32:23,503 ERROR [STDERR] at java.lang.reflect.Method.invoke(Native Method) 14:32:23,523 ERROR [STDERR] at org.jboss.tm.usertx.server.ClientUserTransactionService.invoke(ClientUserTransactionService.java:107) 14:32:23,533 ERROR [STDERR] at java.lang.reflect.Method.invoke(Native Method) 14:32:23,543 ERROR [STDERR] at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) 14:32:23,563 ERROR [STDERR] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) 14:32:23,573 ERROR [STDERR] at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367) 14:32:23,583 ERROR [STDERR] at java.lang.reflect.Method.invoke(Native Method) 14:32:23,603 ERROR [STDERR] at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) 14:32:23,613 ERROR [STDERR] at sun.rmi.transport.Transport$1.run(Transport.java:147) 14:32:23,623 ERROR [STDERR] at java.security.AccessController.doPrivileged(Native Method) 14:32:23,633 ERROR [STDERR] at sun.rmi.transport.Transport.serviceCall(Transport.java:143) 14:32:23,653 ERROR [STDERR] at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) 14:32:23,663 ERROR [STDERR] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) 14:32:23,673 ERROR [STDERR] at java.lang.Thread.run(Thread.java:479) 14:32:23,683 INFO [STDOUT] Leaving ManagerDAOImpl.store() 14:32:23,703 WARN [TransactionImpl] XAException: tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=vw-5897//19, BranchQual=] errorCode=XAER_RMERR oracle.jdbc.xa.OracleXAException at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1159) at oracle.jdbc.xa.client.OracleXAResource.commit(OracleXAResource.java:616) at org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.commit(XAManagedConnection.java:184) at org.jboss.tm.TransactionImpl.commitResources(TransactionImpl.java:1589) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:371) at org.jboss.tm.TxManager.commit(TxManager.java:141) at org.jboss.tm.usertx.server.UserTransactionSessionImpl.commit(UserTransactionSessionImpl.java:165) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.tm.usertx.server.ClientUserTransactionService.invoke(ClientUserTransactionService.java:107) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367) at java.lang.reflect.Method.invoke(Native Method) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) at sun.rmi.transport.Transport$1.run(Transport.java:147) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:143) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:479) 14:32:23,904 WARN [TransactionImpl] xa error: -3 (A resource manager error hasoccured in the transaction branch.); oracle error: 6550; oracle sql error: 0; oracle.jdbc.xa.OracleXAException at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1159) at oracle.jdbc.xa.client.OracleXAResource.commit(OracleXAResource.java:616) at org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.commit(XAManagedConnection.java:184) at org.jboss.tm.TransactionImpl.commitResources(TransactionImpl.java:1589) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:371) at org.jboss.tm.TxManager.commit(TxManager.java:141) at org.jboss.tm.usertx.server.UserTransactionSessionImpl.commit(UserTransactionSessionImpl.java:165) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.tm.usertx.server.ClientUserTransactionService.invoke(ClientUserTransactionService.java:107) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367) at java.lang.reflect.Method.invoke(Native Method) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) at sun.rmi.transport.Transport$1.run(Transport.java:147) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:143) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:479) 14:32:24,114 WARN [TransactionImpl] XAException: tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=vw-5897//19, BranchQual=] errorCode=XAER_RMERR oracle.jdbc.xa.OracleXAException at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1159) at oracle.jdbc.xa.client.OracleXAResource.rollback(OracleXAResource.java:1025) at org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.rollback(XAManagedConnection.java:194) at org.jboss.tm.TransactionImpl.rollbackResources(TransactionImpl.java:1660) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:399) at org.jboss.tm.TxManager.commit(TxManager.java:141) at org.jboss.tm.usertx.server.UserTransactionSessionImpl.commit(UserTransactionSessionImpl.java:165) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.tm.usertx.server.ClientUserTransactionService.invoke(ClientUserTransactionService.java:107) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367) at java.lang.reflect.Method.invoke(Native Method) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) at sun.rmi.transport.Transport$1.run(Transport.java:147) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:143) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:479) 14:32:24,314 WARN [TransactionImpl] xa error: -3 (A resource manager error hasoccured in the transaction branch.); oracle error: 6550; oracle sql error: 0; oracle.jdbc.xa.OracleXAException at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1159) at oracle.jdbc.xa.client.OracleXAResource.rollback(OracleXAResource.java:1025) at org.jboss.resource.adapter.jdbc.xa.XAManagedConnection.rollback(XAManagedConnection.java:194) at org.jboss.tm.TransactionImpl.rollbackResources(TransactionImpl.java:1660) at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:399) at org.jboss.tm.TxManager.commit(TxManager.java:141) at org.jboss.tm.usertx.server.UserTransactionSessionImpl.commit(UserTransactionSessionImpl.java:165) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.tm.usertx.server.ClientUserTransactionService.invoke(ClientUserTransactionService.java:107) at java.lang.reflect.Method.invoke(Native Method) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367) at java.lang.reflect.Method.invoke(Native Method) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:236) at sun.rmi.transport.Transport$1.run(Transport.java:147) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:143) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:479)
the bean itself:
/* * Created on 05.12.2003 */ package com.dus.beantest.ejb; //import com.dus.beantest.ejb; import javax.ejb.*; import javax.transaction.*; import javax.transaction.xa.*; import java.rmi.*; /** * @author dvos * @ejb:bean name = "StupidDBBean" * type = "BMP" * view-type = "remote" * local-jndi-name = "test.interfaces.RolesLocalHome" * schema = "Roles" * transaction-type = "Bean" * * @ejb.util generate = "physical" * @ejb:value-object name = "Roles" * match = "*" * * @ejb.persistence table-name = "testje" * * @jboss.persistence create-table="true" * remove-table="true" * * @jboss.resource-manager res-man-name = "ResManagerName" * res-man-jndi-name = "ResManJndiName" * * @jboss.resource-ref res-ref-name="XAOracleDS" * jndi-name="jdbc/XAOracleDS" * * @ejb.resource-ref res-ref-name="XAOracleDS" * jndi-name="jdbc/XAOracleDS" * res-type = "javax.sql.XADatasource" * res-auth = "Application" * * @ejb.dao class = "com.dus.beantest.ejb.StupidDBDAO" * impl-class = "com.dus.beantest.ejb.StupidDBDAOImpl" * * generate = "true" */ public abstract class StupidDBBean implements EntityBean { private int userID; private String name, lastname; /** * Returns the userID * @return the userID * @ejb.persistence * @ejb.pk-field * @ejb.interface-method */ public int getUserID(){ return userID; } /** * Sets the userID * @param int the new userID value * @ejb.interface-method */ public void setUserID(int userID) { this.userID = userID; } /** * Returns the name * @return the name * * @ejb.persistence * @ejb.interface-method */ public String getName() { return name; } /** * Sets the name * * @param java.lang.String the new name value * @ejb.interface-method */ public void setName(String name) { this.name = name; } /** * Returns the lastname * @return the lastname * * @ejb.persistence * @ejb.interface-method */ public String getLastName() { return lastname; } /** * Sets the lastname * * @param java.lang.String the new name value * @ejb.interface-method */ public void setLastName(String lastname) { this.lastname = lastname; } /** * Finds the Primary Key * @return StupidDBBeanPK object * * @param StupidDBBeanPK userID value */ public StupidDBBeanPK ejbFindByPrimaryKey(StupidDBBeanPK key) throws FinderException{ System.out.println ("Entering ManagerBean.ejbFindByUserID "); System.out.println ("Leaving ManagerBean.ejbFindByUserID "); return null; } /** * @throws CreateException * @ejb.create-method */ public StupidDBBeanPK ejbCreate() throws CreateException { return null; } EntityContext ctx; public void setEntityContext(EntityContext arg0) throws EJBException, RemoteException { ctx = arg0; } public void unsetEntityContext() throws EJBException, RemoteException { ctx = null; } public EntityContext getContext() { return ctx; } }
ant the DAOImpl class
/* * Created on 12.12.2003 */ package com.dus.beantest.ejb; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.ejb.EJBException; import javax.ejb.FinderException; import javax.naming.InitialContext; import javax.sql.DataSource; /** * @author dvos */ public class StupidDBDAOImpl implements StupidDBDAO { private DataSource jdbcFactory; public StupidDBDAOImpl() { super(); } public void init() { System.out.println (" Entering ManageDAOImpl.init() "); InitialContext c = null ; if (this.jdbcFactory == null ){ try { c = new InitialContext() ; this.jdbcFactory= (DataSource) c.lookup("java:XAOracleDS"); }catch (Exception e) { System.out.println ("Error in ManagerDAOImpl.init() "); } } System.out.println (" Leaving ManagerDAOImpl.init() "); } public void load(StupidDBBeanPK pk, StupidDBBean ejb) throws javax.ejb.EJBException { System.out.println (" Entering ManagerDAOImpl.load() "); Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = jdbcFactory.getConnection(); String queryString = "SELECT KEY, NAME, LASTNAME FROM TESTJE WHERE KEY = ?"; ps = conn.prepareStatement(queryString); ps.setInt(1, pk.getUserID()); rs = ps.executeQuery(); System.out.println ("QueryString is " + queryString) ; if ( rs.next() ) { int count =1; ejb.setUserID(rs.getInt(count++)); ejb.setName((rs.getString(count++)).trim()); ejb.setLastName((rs.getString(count++)).trim()); } } catch (SQLException e) { throw new EJBException("Row for id " + pk.userID + " not found in database" + e); } finally { try { rs.close(); ps.close(); conn.close(); } catch (Exception e) {} } System.out.println (" Leaving ManagerDAOImpl.load() ") ; } public void store(StupidDBBean ejb) throws javax.ejb.EJBException { System.out.println (" Entering ManagerDAOImpl.store() "); Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = jdbcFactory.getConnection(); String updateString = "update customer set userid = ?, firstname = ?,lastname = ?," +"" + "address = ?, message = ?, salary = ? where managerid = ?"; ps = conn.prepareStatement(updateString); ps.setInt(1,ejb.getUserID()); ps.setString(2,ejb.getName().trim()); ps.setString(3,ejb.getLastName().trim()); int count = ps.executeUpdate(); System.out.println ("Update String is " + updateString) ; } catch (Exception e ) { e.printStackTrace(); } finally { try { ps.close(); rs.close(); conn.close(); }catch (Exception e) { } } System.out.println (" Leaving ManagerDAOImpl.store() "); } public void remove(StupidDBBeanPK pk) throws javax.ejb.RemoveException, javax.ejb.EJBException { } public StupidDBBeanPK create(StupidDBBean ejb) throws javax.ejb.CreateException, javax.ejb.EJBException { return new StupidDBBeanPK(); } public StupidDBBeanPK findByPrimaryKey(StupidDBBeanPK pk) throws javax.ejb.FinderException { System.out.println (" Entering ManagerDAOImpl.findByPrimaryKey() "); Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = jdbcFactory.getConnection(); String queryString = "select managerid from customer where managerid = ?"; ps = conn.prepareStatement(queryString); int key = pk.getUserID(); ps.setInt(1, key); rs = ps.executeQuery(); boolean result =rs .next(); if ( result) { System.out.println (" Primary Key found"); } } catch (Exception e) { e.printStackTrace(); throw new FinderException("Inside ManagerDAOImpl.findbyPrimaryKey()" + " following primarykey " + pk.getUserID() + "notfound "); } finally { try { rs.close(); ps.close(); conn.close(); } catch(Exception e ) { } } System.out.println (" Leaving ManagerDAOImpl.findByPrimaryKey() " + pk.getUserID()); return pk; } public StupidDBBeanPK findByUserID(int userID) throws javax.ejb.FinderException { System.out.println (" Entering ManagerDAOImpl.findByUserID() "); Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; StupidDBBeanPK pk = new StupidDBBeanPK() ; try { conn = jdbcFactory.getConnection(); String queryString = "select managerid from manager where userid = ?"; ps = conn.prepareStatement(queryString); ps.setInt (1, userID); rs = ps.executeQuery(); boolean result =rs .next(); if ( result) { pk.setUserID( rs.getInt(1) ); System.out.println (" Primary Key found :" + pk.getUserID() ); } } catch (Exception e) { e.printStackTrace(); throw new FinderException("Inside ManagerDAOImpl.findbyPrimaryKey()" + e); } finally { try { rs.close(); ps.close(); conn.close(); } catch(Exception e ) { } } System.out.println (" Leaving ManagerDAOImpl.findByUserID() with key " + pk.getUserID()); return pk; } }