hello,
thx for your information.

now i have configured the used woblogic-datasource to 'don't support global 
transactions' and now it works fine.
:-) ferry malzer 

-----Ursprüngliche Nachricht-----
Von: KÖLL Claus [mailto:[email protected]] 
Gesendet: Montag, 25. März 2013 08:01
An: [email protected]
Betreff: AW: using javax.transaction.UserTransaction with JackRabbit 2.4.3 
[heur]

Hi Ferdinant,

Jackrabbit itself is the XA Resource so therefore you must not use a datasource 
witch is managed by the container.
Can you attach your config file ?

greets
claus

-----Ursprüngliche Nachricht-----
Von: Malzer Ferdinand OSP sIT [mailto:[email protected]] 
Gesendet: Montag, 11. März 2013 15:34
An: [email protected]
Betreff: using javax.transaction.UserTransaction with JackRabbit 2.4.3

Hello,
In JackRabbit the query of Repository.OPTION_TRANSACTIONS_SUPPORTED return true.
Therefore we want to use javax.transaction.UserTransaction with JackRabbit.

What we want to do is shown in the following simplified pseude-code:


        Session session = null;
        Transaction tx = null;
        try {
            session = login(...);

            tx = new Transaction();
            tx.begin();

            //delete resources persisted in another TX datasource
            cleanOtherDBResources();

            //delete a node persisted in JackRabbit
            Node node = session.getNode(path);
            node.remove();
            session.save();

            tx.commit();

        } catch (Exception e) {
            if (tx != null) { tx.softRollback();}
        } finally {
            if (session != null) { session.logout();}
        }


when we use a  non XA-datasource for the JackRabbit PersistenceManager we get 
the following exception:

Caused by: java.sql.SQLException: Connection has already been created in this 
tx context for pool named cmspool. Illegal attempt to create connection from 
another pool: jackrabbitpool
        at weblogic.jdbc.jts.Driver.getExistingConnection(Driver.java:608)
        at weblogic.jdbc.jts.Driver.connect(Driver.java:127)
        at 
weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:339)
        at 
org.apache.jackrabbit.core.util.db.ConnectionHelper.getConnection(ConnectionHelper.java:436)
        at 
org.apache.jackrabbit.core.util.db.ConnectionHelper.startBatch(ConnectionHelper.java:239)
        at 
org.apache.jackrabbit.core.journal.DatabaseJournal.startBatch(DatabaseJournal.java:506)
        at 
org.apache.jackrabbit.core.journal.DatabaseJournal.doLock(DatabaseJournal.java:474)


when we use a XA-datasource for the JackRabbit PersistenceManager we get the 
following exception:

Caused by: java.sql.SQLException: Cannot set auto commit to "true" when in 
distributed transaction.
        at 
weblogic.jdbc.wrapper.JTSConnection.setAutoCommit(JTSConnection.java:593)
        at 
org.apache.jackrabbit.core.util.db.ConnectionHelper.getConnection(ConnectionHelper.java:439)
        at 
org.apache.jackrabbit.core.util.db.ConnectionHelper.startBatch(ConnectionHelper.java:239)
        at 
org.apache.jackrabbit.core.journal.DatabaseJournal.startBatch(DatabaseJournal.java:506)
        at 
org.apache.jackrabbit.core.journal.DatabaseJournal.doLock(DatabaseJournal.java:474)

Does somebody know how to use javax.transaction.UserTransaction in JackRabbit 
and how the datasource has to be configured?
Thx in advance!

ferry malzer

Reply via email to