I have an application that is implemented as a set of MBeans.  In several places I 
need to call two Oracle stored procs within the same transaction.  Currently we do 
this by getting a connection, calling proc1, calling proc2 and then calling commit().  
This works on other app servers where we run this application.

We're trying to use jboss 3.2.3 with an oracle ds.  WHat is happing is during the 
prepareStatement() call for the second proc we are getting the following :-

26 Mar 2004 08:04:43,269 DEBUG [RNStateEng] [RNState Thread 0] - 
java.sql.SQLException: ORA-01453: SET TRANSACTION must be first statement of 
transaction

        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
        at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
        at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
        at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
        at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
        at 
oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
        at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
        at 
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
        at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:854)
        at 
oracle.jdbc.driver.OracleConnection.setTransactionIsolation(OracleConnection.java:1634)
        at 
org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.checkState(BaseWrapperManagedConnection.java:410)
        at 
org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.checkTransaction(BaseWrapperManagedConnection.java:399)
        at 
org.jboss.resource.adapter.jdbc.WrappedConnection.checkTransaction(WrappedConnection.java:760)
        at 
org.jboss.resource.adapter.jdbc.WrappedConnection.prepareCall(WrappedConnection.java:356)
        at 
com.viacore.co.db.CallableStatementWrapper_ORACLE.init(CallableStatementWrapper_ORACLE.java:58)
        at com.viacore.co.db.DBManager.getStatement(DBManager.java:93)
        at com.viacore.server.RNMessages.getRNMessages(RNMessages.java:36)
        at com.viacore.server.RNWork.run(RNWork.java:116)
        at java.lang.Thread.run(Thread.java:534)


It appears that there is logic in the WrappedConnection.prepareCall() that calls 
setTransactionIsolation() every time a prepareStatement() call is made.

THis looks to be a bug to me.  Does anyone have a work around suggestion?

Thanks,

Cameron.  

<a 
href="http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3827656#3827656";>View 
the original post</a>

<a 
href="http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3827656>Reply 
to the post</a>


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to