Title: Problems using oracle's XADataSource

Hello everybody,

I am using jboss 2.2.2 with tomcat 3.2.2, and oracle 8.1.7

In my jboss.jcml, I have:

<!-- shouldn't be needed, as handled by xadatasource -->
<mbean code="org.jboss.jdbc.JdbcProvider" name="DefaultDomain:service=JdbcProvider">
 <attribute name="Drivers">oracle.jdbc.driver.OracleDriver</attribute>
</mbean>

<mbean code="org.jboss.jdbc.XADataSourceLoader" name="DefaultDomain:service=XADataSource,name=OracleDB">
    <attribute name="PoolName">Oracle</attribute>
    <attribute name="DataSourceClass">oracle.jdbc.xa.client.OracleXADataSource</attribute>
    <attribute name="Properties"></attribute>
    <attribute name="URL">jdbc:oracle:oci8:@eonworx</attribute>
    <attribute name="GCMinIdleTime">1200000</attribute>
    <attribute name="JDBCUser">xxxx</attribute>
    <attribute name="MaxSize">10</attribute>
    <attribute name="Password">xxxx</attribute>
    <attribute name="GCEnabled">false</attribute>
    <attribute name="InvalidateOnError">false</attribute>
    <attribute name="TimestampUsed">false</attribute>
    <attribute name="Blocking">true</attribute>
    <attribute name="GCInterval">120000</attribute>
    <attribute name="IdleTimeout">1800000</attribute>
    <attribute name="IdleTimeoutEnabled">false</attribute>
    <attribute name="LoggingEnabled">false</attribute>
    <attribute name="MaxIdleTimeoutPercent">1.0</attribute>
    <attribute name="MinSize">1</attribute>
</mbean>

And have also commented out the 'jboss.xa.xidclass=oracle.jdbc.xa.OracleXid' bit in jboss.properties.

From inside my beans, I get connections like this:

DataSource ds;
ds=(DataSource)getInitialContext().lookup("java:/Oracle");
java.sql.Connection conn =ds.getConnection();

We're using BMP, and we have Required transactional settings.


Now, my problem is the following.  I keep getting XAER_NOTA exceptions, followed by javax.transaction.RollBackExceptions saying that the transaction has already been marked for rollback. Here's a sample:

[ApplicationController] XAException: tx=XidImpl [FormatId=257, GlobalId=josonlap//0, BranchQual=] errorCode=XAER_NOTA
[ApplicationController] oracle.jdbc.xa.OracleXAException
[ApplicationController]         at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:498)
[ApplicationController]         at oracle.jdbc.xa.client.OracleXAResource.end(OracleXAResource.java:285)
[ApplicationController]         at org.jboss.tm.TxCapsule.endResource(TxCapsule.java:1147)
[ApplicationController]         at org.jboss.tm.TxCapsule.delistResource(TxCapsule.java:541)
[ApplicationController]         at org.jboss.tm.TransactionImpl.delistResource(TransactionImpl.java:99)
[ApplicationController]         at org.opentools.minerva.jdbc.xa.XAConnectionFactory$2.closeConnection(XAConnectionFactory.java:97)

[ApplicationController]         at org.opentools.minerva.jdbc.xa.XAConnectionFactory$2.connectionClosed(XAConnectionFactory.java:82)

[ApplicationController]         at oracle.jdbc.pool.OraclePooledConnection.callListener(OraclePooledConnection.java:241)

[ApplicationController]         at oracle.jdbc.pool.OraclePooledConnection.logicalClose(OraclePooledConnection.java:215)

[ApplicationController]         at oracle.jdbc.driver.OracleConnection.logicalClose(OracleConnection.java:1968)
[ApplicationController]         at oracle.jdbc.driver.OracleConnection.close(Ora

Followed by:

[ApplicationController] TRANSACTION ROLLBACK EXCEPTION:null; nested exception is:
        javax.ejb.EJBException
[ApplicationController] java.lang.RuntimeException: Unable to register with TransactionManager: javax.transaction.RollbackException: Already marked for rollback

[ApplicationController]         at org.opentools.minerva.jdbc.xa.XAConnectionFactory.prepareObject(XAConnectionFactory.java:279)

[ApplicationController]         at org.opentools.minerva.pool.ObjectPool.getObject(ObjectPool.java:548)
[ApplicationController]         at org.opentools.minerva.pool.ObjectPool.getObject(ObjectPool.java:521)
[ApplicationController]         at org.opentools.minerva.jdbc.xa.XAPoolDataSource.getConnection(XAPoolDataSource.java:165)

Now, if I switch the DataSourceClass to org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl, everything works fine. But, I do not want to use org.opentools.minerva.jdbc.xa.wrapper.XADataSourceImpl, as then I lose 2 phase commit, which is needed.

Has anyone seen this, or know how to fix/work-around it?

Much Appreciated.

jord sonneveld
foundation developer
the eon company
www.eoncompany.com

o 212.563.4812
m 512.294.8674
e [EMAIL PROTECTED]
 

Reply via email to