Hi,
I have a written an MDB which listens on WebSphere MQ Queue Connection Factory .In ejb-jar.xml ,I set trans-attribute for onMessage method to be Not Supported.
In MDB ,onMessage() I have written this code
try{
if(msg instanceof TextMessage){
String msgText = ((TextMessage)msg).getText();
// this code basically reads input text and in turn make a database call and get some data.
EQLParser objparser = EQLParser.getInstance();
boolean flag = objparser.log(msgText);
if(!flag){
log.info("Due to certain errors ,msg failed to log ");
}
}}catch(Exception e){
System.out.println("DEBUG MDB Exception ::::"+e.getMessage());
}
It works fine ,as the requirment but after onMessage method ,Container throws an exception as shown below:
[11/2/03 19:26:55:935 EST] 1950eab2 LocalTransact E J2CA0024E: Method rollback, within transaction branch ID <null> of resource pool jdbc/oracleDSN, caught com.ibm.ws.exception.WsException: DSRA0080E: An exception was received by the Data Store Adapter. See original exception message: Use explicit XA call.
at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:251)
at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:172)
at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:125)
at com.ibm.ws.rsadapter.AdapterUtil.translateSQLException(AdapterUtil.java:904)
at com.ibm.ws.rsadapter.spi.WSRdbSpiLocalTransactionImpl.rollback(WSRdbSpiLocalTransactionImpl.java:297)
at com.ibm.ejs.j2c.LocalTransactionWrapper.rollback(LocalTransactionWrapper.java:307)
at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.cleanup(LocalTranCoordImpl.java(Compiled Code))
at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:534)
at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:144)
at com.ibm.ejs.csi.NotSupported.postInvoke(NotSupported.java:91)
at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java(Compiled Code))
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java(Compiled Code))
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:101)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:120)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:372)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
---- Begin backtrace for nested exception
java.sql.SQLException: Use explicit XA call
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:156)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:219)
at oracle.jdbc.driver.OracleConnection.rollback(OracleConnection.java:500)
at com.ibm.ws.rsadapter.spi.WSRdbSpiLocalTransactionImpl.rollback(WSRdbSpiLocalTransactionImpl.java:280)
at com.ibm.ejs.j2c.LocalTransactionWrapper.rollback(LocalTransactionWrapper.java:307)
at com.ibm.ws.LocalTransaction.LocalTranCoordImpl.cleanup(LocalTranCoordImpl.java(Compiled Code))
at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:534)
at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:144)
at com.ibm.ejs.csi.NotSupported.postInvoke(NotSupported.java:91)
at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java(Compiled Code))
at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java(Compiled Code))
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:101)
at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java:120)
at com.ibm.ejs.jms.listener.ServerSession.run(ServerSession.java:372)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
and threw a XAException.
Anyone knows what it exactly means...and how to solve this problem..