Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

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

 
Jimmy Kennedy
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 1551
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 3892
5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic