类org.hibernate.resource.transaction.spi.TransactionStatus源码实例Demo

下面列出了怎么用org.hibernate.resource.transaction.spi.TransactionStatus的API类实例代码及写法,或者点击链接到github查看源代码。

@Override
public void begin() {
	try {
		if ( getStatus() == TransactionStatus.NOT_ACTIVE ) {
			log.trace( "Calling TransactionManager#begin" );
			transactionManager.begin();
			initiator = true;
			log.trace( "Called TransactionManager#begin" );
		}
		else {
			log.trace( "Skipping TransactionManager#begin due to already active transaction" );
		}
	}
	catch (Exception e) {
		throw new TransactionException( "JTA TransactionManager#begin failed", e );
	}
}
 
@Override
public void begin() {
	try {
		if ( getStatus() == TransactionStatus.NOT_ACTIVE ) {
			log.trace( "Calling UserTransaction#begin" );
			userTransaction.begin();
			initiator = true;
			log.trace( "Called UserTransaction#begin" );
		}
		else {
			log.trace( "Skipping TransactionManager#begin due to already active transaction" );
		}
	}
	catch (Exception e) {
		throw new TransactionException( "JTA UserTransaction#begin failed", e );
	}
}
 
源代码3 项目: MirServer-Netty   文件: Handler.java
protected void exce(ChannelHandlerContext ctx, ClientPacket packet) throws Exception {
	session = Session.getSession(ctx);
	if(null == session){
		logger.debug("new session for {}",ctx);
		session = Session.create(ctx);
	}
	DB.getSession().getTransaction().begin();
	try{
		onPacket(packet);
		if(DB.getSession().getTransaction().getStatus().isOneOf(TransactionStatus.ACTIVE))
			DB.getSession().getTransaction().commit();
	}catch(Exception e){
		logger.error("onPacket error, {}", packet.protocol , e);
		if(DB.getSession().isOpen())
			DB.getSession().getTransaction().rollback();
	}

}
 
/** {@inheritDoc} */
@Override public void onSessionEnd(CacheStoreSession ses, boolean commit) {
    Session hibSes = ses.attach(null);

    if (hibSes != null) {
        try {
            Transaction tx = hibSes.getTransaction();

            if (commit) {
                if (hibSes.isDirty())
                    hibSes.flush();

                if (tx.getStatus() == TransactionStatus.ACTIVE)
                    tx.commit();
            }
            else if (tx.getStatus().canRollback())
                tx.rollback();
        }
        catch (HibernateException e) {
            throw new CacheWriterException("Failed to end store session [tx=" + ses.transaction() + ']', e);
        }
        finally {
            hibSes.close();
        }
    }
}
 
源代码5 项目: ignite   文件: CacheHibernateBlobStoreSelfTest.java
/** {@inheritDoc} */
@Override protected void afterTest() throws Exception {
    super.afterTest();

    Session s = store.session(null);

    if (s == null)
        return;

    try {
        s.createQuery("delete from " + CacheHibernateBlobStoreEntry.class.getSimpleName())
                .setFlushMode(FlushMode.ALWAYS).executeUpdate();

        Transaction hTx = s.getTransaction();

        if (hTx != null && hTx.getStatus() == TransactionStatus.ACTIVE)
            hTx.commit();
    }
    finally {
        s.close();
    }
}
 
/** {@inheritDoc} */
@Override public void onSessionEnd(CacheStoreSession ses, boolean commit) {
    Session hibSes = ses.attach(null);

    if (hibSes != null) {
        try {
            Transaction tx = hibSes.getTransaction();

            if (commit) {
                if (hibSes.isDirty())
                    hibSes.flush();

                if (tx.getStatus() == TransactionStatus.ACTIVE)
                    tx.commit();
            }
            else if (tx.getStatus().canRollback())
                tx.rollback();
        }
        catch (HibernateException e) {
            throw new CacheWriterException("Failed to end store session [tx=" + ses.transaction() + ']', e);
        }
        finally {
            hibSes.close();
        }
    }
}
 
源代码7 项目: ignite   文件: CacheHibernateBlobStoreSelfTest.java
/** {@inheritDoc} */
@Override protected void afterTest() throws Exception {
    super.afterTest();

    Session s = store.session(null);

    if (s == null)
        return;

    try {
        s.createQuery("delete from " + CacheHibernateBlobStoreEntry.class.getSimpleName())
                .setFlushMode(FlushMode.ALWAYS).executeUpdate();

        Transaction hTx = s.getTransaction();

        if (hTx != null && hTx.getStatus() == TransactionStatus.ACTIVE)
            hTx.commit();
    }
    finally {
        s.close();
    }
}
 
@Before
public void setup() {
    exchange = mock(Exchange.class);
    BindingOperationInfo boi = mock(BindingOperationInfo.class);
    when(exchange.getBindingOperationInfo()).thenReturn(boi);
    OperationInfo oi = mock(OperationInfo.class);
    when(boi.getOperationInfo()).thenReturn(oi);
    invokerBuilder = new UnitOfWorkInvokerFactory();
    fooService = new FooService();
    sessionFactory = mock(SessionFactory.class);
    session = mock(Session.class);
    when(sessionFactory.openSession()).thenReturn(session);
    transaction = mock(Transaction.class);
    when(session.getTransaction()).thenReturn(transaction);
    when(transaction.getStatus()).thenReturn(TransactionStatus.ACTIVE);
}
 
@Override
public void rollback() {
	try {
		TransactionStatus status = jdbcResourceTransaction.getStatus();
		if ( ( rollbackOnly && status != TransactionStatus.NOT_ACTIVE ) || status == TransactionStatus.ACTIVE ) {
			jdbcResourceTransaction.rollback();
			JdbcResourceLocalTransactionCoordinatorImpl.this.afterCompletionCallback( false );
		}
	}
	finally {
		rollbackOnly = false;
	}

	// no-op otherwise.
}
 
@Override
public void markRollbackOnly() {
	if ( getStatus() != TransactionStatus.ROLLED_BACK ) {
		if ( log.isDebugEnabled() ) {
			log.debug(
					"JDBC transaction marked for rollback-only (exception provided for stack trace)",
					new Exception( "exception just for purpose of providing stack trace" )
			);
		}

		rollbackOnly = true;
	}
}
 
@Override
public TransactionStatus getStatus() {
	try {
		return StatusTranslator.translate( transactionManager.getStatus() );
	}
	catch (SystemException e) {
		throw new TransactionException( "JTA TransactionManager#getStatus failed", e );
	}
}
 
@Override
public TransactionStatus getStatus() {
	try {
		return StatusTranslator.translate( userTransaction.getStatus() );
	}
	catch (SystemException e) {
		throw new TransactionException( "JTA TransactionManager#getStatus failed", e );
	}
}
 
源代码13 项目: lams   文件: StatusTranslator.java
public static TransactionStatus translate(int status) {
	TransactionStatus transactionStatus = null;
	switch ( status ) {
		case Status.STATUS_ACTIVE:
			transactionStatus = TransactionStatus.ACTIVE;
			break;
		case Status.STATUS_PREPARED:
			transactionStatus = TransactionStatus.ACTIVE;
			break;
		case Status.STATUS_PREPARING:
			transactionStatus = TransactionStatus.ACTIVE;
			break;
		case Status.STATUS_COMMITTING:
			transactionStatus = TransactionStatus.COMMITTING;
			break;
		case Status.STATUS_ROLLING_BACK:
			transactionStatus = TransactionStatus.ROLLING_BACK;
			break;
		case Status.STATUS_NO_TRANSACTION:
			transactionStatus = TransactionStatus.NOT_ACTIVE;
			break;
		case Status.STATUS_COMMITTED:
			transactionStatus = TransactionStatus.COMMITTED;
			break;
		case Status.STATUS_ROLLEDBACK:
			transactionStatus = TransactionStatus.ROLLED_BACK;
			break;
		case Status.STATUS_MARKED_ROLLBACK:
			transactionStatus = TransactionStatus.MARKED_ROLLBACK;
			break;
		default:
			break;
	}
	if ( transactionStatus == null ) {
		throw new TransactionException( "TransactionManager reported transaction status as unknwon" );
	}
	return transactionStatus;
}
 
源代码14 项目: lams   文件: JtaTransactionCoordinatorImpl.java
@Override
public void explicitJoin() {
	if ( synchronizationRegistered ) {
		log.debug( "JTA transaction was already joined (RegisteredSynchronization already registered)" );
		return;
	}

	if ( getTransactionDriverControl().getStatus() != TransactionStatus.ACTIVE ) {
		throw new TransactionRequiredForJoinException(
				"Explicitly joining a JTA transaction requires a JTA transaction be currently active"
		);
	}

	joinJtaTransaction();
}
 
@Override
public void begin() {
	try {
		if ( !doConnectionsFromProviderHaveAutoCommitDisabled() ) {
			log.trace( "Preparing to begin transaction via JDBC Connection.setAutoCommit(false)" );
			getConnectionForTransactionManagement().setAutoCommit( false );
			log.trace( "Transaction begun via JDBC Connection.setAutoCommit(false)" );
		}
		status = TransactionStatus.ACTIVE;
	}
	catch( SQLException e ) {
		throw new TransactionException( "JDBC begin transaction failed: ", e );
	}
}
 
@Override
public void commit() {
	try {
		log.trace( "Preparing to commit transaction via JDBC Connection.commit()" );
		getConnectionForTransactionManagement().commit();
		status = TransactionStatus.COMMITTED;
		log.trace( "Transaction committed via JDBC Connection.commit()" );
	}
	catch( SQLException e ) {
		status = TransactionStatus.FAILED_COMMIT;
		throw new TransactionException( "Unable to commit against JDBC Connection", e );
	}

	afterCompletion();
}
 
protected void resetConnection(boolean initiallyAutoCommit) {
	try {
		if ( initiallyAutoCommit ) {
			log.trace( "re-enabling auto-commit on JDBC Connection after completion of JDBC-based transaction" );
			getConnectionForTransactionManagement().setAutoCommit( true );
			status = TransactionStatus.NOT_ACTIVE;
		}
	}
	catch ( Exception e ) {
		log.debug(
				"Could not re-enable auto-commit on JDBC Connection after completion of JDBC-based transaction : " + e
		);
	}
}
 
@Override
public void rollback() {
	try {
		log.trace( "Preparing to rollback transaction via JDBC Connection.rollback()" );
		getConnectionForTransactionManagement().rollback();
		status = TransactionStatus.ROLLED_BACK;
		log.trace( "Transaction rolled-back via JDBC Connection.rollback()" );
	}
	catch( SQLException e ) {
		status = TransactionStatus.FAILED_ROLLBACK;
		throw new TransactionException( "Unable to rollback against JDBC Connection", e );
	}

	afterCompletion();
}
 
源代码19 项目: lams   文件: TransactionImpl.java
@Override
public void rollback() {
	if ( !isActive() ) {
		if ( jpaCompliance.isJpaTransactionComplianceEnabled() ) {

			throw new IllegalStateException(
					"JPA compliance dictates throwing IllegalStateException when #rollback " +
							"is called on non-active transaction"
			);
		}
	}

	TransactionStatus status = getStatus();
	if ( status == TransactionStatus.ROLLED_BACK || status == TransactionStatus.NOT_ACTIVE ) {
		// Allow rollback() calls on completed transactions, just no-op.
		LOG.debug( "rollback() called on an inactive transaction" );
		return;
	}

	if ( !status.canRollback() ) {
		throw new TransactionException( "Cannot rollback transaction in current status [" + status.name() + "]" );
	}

	LOG.debug( "rolling back" );

	if ( status != TransactionStatus.FAILED_COMMIT || allowFailedCommitToPhysicallyRollback() ) {
		internalGetTransactionDriverControl().rollback();
	}
}
 
源代码20 项目: lams   文件: TransactionImpl.java
@Override
public TransactionStatus getStatus() {
	if ( transactionDriverControl == null ) {
		if ( session.isOpen() ) {
			transactionDriverControl = transactionCoordinator.getTransactionDriverControl();
		}
		else {
			return TransactionStatus.NOT_ACTIVE;
		}
	}
	return transactionDriverControl.getStatus();
}
 
源代码21 项目: lams   文件: TransactionImpl.java
@Override
public boolean getRollbackOnly() {
	if ( !isActive() ) {
		if ( jpaCompliance.isJpaTransactionComplianceEnabled() ) {
			throw new IllegalStateException(
					"JPA compliance dictates throwing IllegalStateException when #getRollbackOnly " +
							"is called on non-active transaction"
			);
		}
	}

	return getStatus() == TransactionStatus.MARKED_ROLLBACK;
}
 
源代码22 项目: lams   文件: SessionImpl.java
private boolean isTransactionFlushable() {
	if ( getCurrentTransaction() == null ) {
		// assume it is flushable - CMT, auto-commit, etc
		return true;
	}
	final TransactionStatus status = getCurrentTransaction().getStatus();
	return status == TransactionStatus.ACTIVE || status == TransactionStatus.COMMITTING;
}
 
private void rollbackIfNecessary() {
    if (transaction == null) {
        return;
    }
    if(transaction.getStatus() != TransactionStatus.COMMITTED){
        transaction.rollback();
    }
}
 
源代码24 项目: ignite   文件: CacheHibernateBlobStore.java
/**
 * Ends hibernate session.
 *
 * @param ses Hibernate session.
 * @param tx Cache ongoing transaction.
 */
private void end(Session ses, Transaction tx) {
    // Commit only if there is no cache transaction,
    // otherwise sessionEnd() will do all required work.
    if (tx == null) {
        org.hibernate.Transaction hTx = ses.getTransaction();

        if (hTx != null && hTx.getStatus() == TransactionStatus.ACTIVE)
            hTx.commit();

        ses.close();
    }
}
 
源代码25 项目: ignite   文件: CacheHibernateBlobStore.java
/**
 * Ends hibernate session.
 *
 * @param ses Hibernate session.
 * @param tx Cache ongoing transaction.
 */
private void end(Session ses, Transaction tx) {
    // Commit only if there is no cache transaction,
    // otherwise sessionEnd() will do all required work.
    if (tx == null) {
        org.hibernate.Transaction hTx = ses.getTransaction();

        if (hTx != null && hTx.getStatus() == TransactionStatus.ACTIVE)
            hTx.commit();

        ses.close();
    }
}
 
源代码26 项目: robe   文件: WrapperServlet.java
private void rollbackTransaction(Session session, UnitOfWork uow) {
    if (uow.transactional()) {
        Transaction txn = session.getTransaction();
        if (txn != null && session.getTransaction().getStatus() != TransactionStatus.ACTIVE) {
            txn.rollback();
        }
    }

}
 
源代码27 项目: robe   文件: WrapperServlet.java
private void commitTransaction(Session session, UnitOfWork uow) {
    if (uow.transactional()) {
        Transaction txn = session.getTransaction();
        if (txn != null && session.getTransaction().getStatus() != TransactionStatus.ACTIVE) {
            txn.commit();
        }
    }

}
 
源代码28 项目: robe   文件: Transaction.java
/**
 * If transaction is present and active then commit.
 */
private void success() {
    org.hibernate.Transaction txn = session.getTransaction();
    if (txn != null && txn.getStatus().equals(TransactionStatus.ACTIVE)) {
        txn.commit();
    }
}
 
源代码29 项目: robe   文件: Transaction.java
/**
 * If transaction is present and active then rollback.
 */
private void error() {
    org.hibernate.Transaction txn = session.getTransaction();
    if (txn != null && txn.getStatus().equals(TransactionStatus.ACTIVE)) {
        txn.rollback();
    }
}
 
源代码30 项目: dropwizard-jaxws   文件: UnitOfWorkInvoker.java
/**
 * @see io.dropwizard.hibernate.UnitOfWorkAspect#rollbackTransaction()
 */
private void rollbackTransaction(Session session, UnitOfWork unitOfWork) {
    if (unitOfWork.transactional()) {
        final Transaction txn = session.getTransaction();
        if (txn != null && txn.getStatus().equals(TransactionStatus.ACTIVE)) {
            txn.rollback();
        }
    }
}
 
 类所在包
 同包方法