aspose file tools*
The moose likes Websphere and the fly likes Websphere connecting with Oracle9i-Problem in setting transaction attributes of MDB Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Products » Websphere
Bookmark "Websphere connecting with Oracle9i-Problem in setting transaction attributes of MDB" Watch "Websphere connecting with Oracle9i-Problem in setting transaction attributes of MDB" New topic
Author

Websphere connecting with Oracle9i-Problem in setting transaction attributes of MDB

Jimmy Kennedy
Greenhorn

Joined: Oct 28, 2003
Posts: 14
Hi,
I have an MDB that is listening JMS Messages.I set the transcation attribute of MDB onMessage() method in the deployment desriptor "Required".
It is giving me this error in the SystemOut.log file.
[12/10/03 14:12:48:392 CST] 66d20958 ExceptionUtil E CNTR0020E: Non-application exception occurred while processing method "onMessage" on bean "BeanId(QEL#qel-1.0.0.jar#EQLMDB, null)". Exception data: java.lang.reflect.InvocationTargetException: java.lang.NoSuchMethodError: oracle.jdbc.xa.OracleXAException: method getXAErrorMessage(I)Ljava/lang/String; not found
at com.ibm.websphere.rsadapter.OracleDataStoreHelper.getXAExceptionContents(OracleDataStoreHelper.java:733)
at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.traceXAException(WSRdbXaResourceImpl.java:871)
at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.start(WSRdbXaResourceImpl.java:827)
at com.ibm.ejs.j2c.XATransactionWrapper.start(XATransactionWrapper.java:1405)
at com.ibm.ejs.jts.jta.WSResourceImplBase.start(WSResourceImplBase.java:164)
at com.ibm.ejs.jts.jta.TransactionImpl.enlistResource(TransactionImpl.java:730)
at com.ibm.ejs.jts.jta.JTSXA.enlist(JTSXA.java:998)
at com.ibm.ejs.j2c.XATransactionWrapper.enlist(XATransactionWrapper.java:740)
at com.ibm.ejs.j2c.ConnectionEventListener.interactionPending(ConnectionEventListener.java:743)
at com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl.processInteractionPendingEvent(WSRdbManagedConnectionImpl.java:1299)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.beginTransactionIfNecessary(WSJdbcConnection.java:328)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.createStatement(WSJdbcConnection.java:697)
at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.createStatement(WSJdbcConnection.java:673)
at com.sbc.eql.dao.EQLDAO.getErrorDetail(EQLDAO.java:39)
at com.sbc.eql.util.EQLParser.log(EQLParser.java:99)
at com.sbc.eql.ejb.EQLMDBBean.onMessage(EQLMDBBean.java:49)
at com.ibm.ejs.jms.listener.MDBWrapper$PriviledgedOnMessage.run(MDBWrapper.java:205)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrapper.java:194)
at com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.java:172)
at com.ibm.mq.jms.MQSession.run(MQSession.java(Compiled Code))
at com.ibm.ejs.jms.JMSSessionHandle.run(JMSSessionHandle.java:922)
at com.ibm.ejs.jms.listener.ServerSession.connectionConsumerOnMessage(ServerSession.java:697)
at com.ibm.ejs.jms.listener.ServerSession.onMessage(ServerSession.java:482)
at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSession.java:449)
at java.lang.reflect.Method.invoke(Native Method)
at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(ServerSessionDispatcher.java:37)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:91)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:127)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:372)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
Rufus BugleWeed
Ranch Hand

Joined: Feb 22, 2002
Posts: 1551
Well I'm just shooting in the dark, but sometimes the vendors have two sets of drivers. One for XA data sources and another for non XA data sources. Your application appears to be looking for an XA.
Are you doing distributed transactions?
Jimmy Kennedy
Greenhorn

Joined: Oct 28, 2003
Posts: 14
I am not using distributed transactions.Well my problem is solved.
http://publib7b.boulder.ibm.com/wasinfo1/en/info/aes/ae/rjta_useltran.html
I am using local transactions .I set transaction attribute of onMessage() method as NotSupported and add foloowing entries in ibm-ejb-jar-ext.xmi
<structure xmi:id="BeanStructure_1" inheritenceRoot="false"/>
<localTransaction xmi:id="LocalTransaction_1" resolver="ContainerAtBoundary" unresolvedAction="Rollback"/>
as I read from the link above.
Kyle Brown
author
Ranch Hand

Joined: Aug 10, 2001
Posts: 3879
There's a reason I didn't lead you down that path. When you use local transactions in this way the receipt of the Message by the MDB and the Oracle transaction are NOT tied together. Thus, if you experience an Oracle error and that transaction rolls back, the message is gone, kaput, not reprocessed. If you use XA transactions the two are automatically tied together.
Kyle


Kyle Brown, Author of Persistence in the Enterprise and Enterprise Java Programming with IBM Websphere, 2nd Edition
See my homepage at http://www.kyle-brown.com/ for other WebSphere information.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Websphere connecting with Oracle9i-Problem in setting transaction attributes of MDB
 
Similar Threads
Error when preparing a transaction for commit
Connecting Websphere 5.0 to Oracle 8.1.7
Exception processing JMS Message for MDB
JMS listener exception: Queue sessions increment
jms puts / get within a mdb