Example usage for javax.transaction.xa XAResource TMNOFLAGS

List of usage examples for javax.transaction.xa XAResource TMNOFLAGS

Introduction

In this page you can find the example usage for javax.transaction.xa XAResource TMNOFLAGS.

Prototype

int TMNOFLAGS

To view the source code for javax.transaction.xa XAResource TMNOFLAGS.

Click Source Link

Document

Use TMNOFLAGS to indicate no flags value is selected.

Usage

From source file:org.nuxeo.ecm.core.storage.sql.TestSQLBackend.java

@Test
public void testSaveOnCommit() throws Exception {
    if (!DatabaseHelper.DATABASE.supportsXA()) {
        return;// w  ww.ja  v a 2s  .c  om
    }

    Session session = repository.getConnection(); // init
    session.save();

    XAResource xaresource = ((SessionImpl) session).getXAResource();

    // first transaction
    Xid xid = new XidImpl("11111111111111111111111111111111");
    xaresource.start(xid, XAResource.TMNOFLAGS);
    Node root = session.getRootNode();
    assertNotNull(root);
    session.addChildNode(root, "foo", null, "TestDoc", false);
    // let end do an implicit save
    xaresource.end(xid, XAResource.TMSUCCESS);
    xaresource.prepare(xid);
    xaresource.commit(xid, false);

    // should have saved, clearing caches should be harmless
    ((SessionImpl) session).clearCaches();

    // second transaction
    xid = new XidImpl("22222222222222222222222222222222");
    xaresource.start(xid, XAResource.TMNOFLAGS);
    Node foo = session.getNodeByPath("/foo", null);
    assertNotNull(foo);
    xaresource.end(xid, XAResource.TMSUCCESS);
    int outcome = xaresource.prepare(xid);
    if (outcome == XAResource.XA_OK) {
        // Derby doesn't allow rollback if prepare returned XA_RDONLY
        xaresource.rollback(xid);
    }
}

From source file:org.seasar.karrta.jcr.intercepter.JcrTransactionInterceptor.java

public Object invoke(MethodInvocation invocation) throws Throwable {
    Thread currentThread = Thread.currentThread();
    if (this.sessionManager_.isExist(currentThread)) {
        return invocation.proceed();
    }/*from ww  w  .  j a v  a  2  s  .  c o m*/

    logger_.debug("::: [Begin Transaction] ::: [" + currentThread + "] :::");

    // check in jcr-session.
    XASession session = (XASession) sessionManager_.borrowObject(currentThread);
    Xid xid = new Xid() {
        public byte[] getBranchQualifier() {
            return new byte[0];
        }

        public int getFormatId() {
            return 0;
        }

        public byte[] getGlobalTransactionId() {
            return new byte[0];
        }
    };
    XAResource xares = session.getXAResource();
    xares.start(xid, XAResource.TMNOFLAGS);

    Object result = null;
    try {
        for (Method m : invocation.getThis().getClass().getMethods()) {
            if ("setOcmQueryManager".equals(m.getName())) {
                m.invoke(invocation.getThis(), this.ocmFactory.getQueryManager());
            }
            if ("setQueryManager".equals(m.getName())) {
                m.invoke(invocation.getThis(), session.getWorkspace().getQueryManager());
            }
        }
        result = invocation.proceed();

        xares.end(xid, XAResource.TMSUCCESS);
        xares.prepare(xid);
        xares.commit(xid, false);

    } catch (Exception e) {
        e.printStackTrace();
        xares.rollback(xid);

    } finally {
        // check out jcr-session.
        this.sessionManager_.returnSession(currentThread, session);
        logger_.debug("::: [End Transaction] ::: [" + currentThread + "] :::");
    }
    return result;
}