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;
}
}