本文整理汇总了Java中javax.transaction.Status.STATUS_ROLLING_BACK属性的典型用法代码示例。如果您正苦于以下问题:Java Status.STATUS_ROLLING_BACK属性的具体用法?Java Status.STATUS_ROLLING_BACK怎么用?Java Status.STATUS_ROLLING_BACK使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类javax.transaction.Status
的用法示例。
在下文中一共展示了Status.STATUS_ROLLING_BACK属性的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: buildErrorString
/**
* Utility method to report errors about invalid state.
*
* @return - an error based on status
*/
private String buildErrorString()
{
StringBuilder buffer = new StringBuilder(128);
buffer.append("The indexer is unable to accept more work: ");
switch (getStatus().getStatus())
{
case Status.STATUS_COMMITTED:
buffer.append("The indexer has been committed");
break;
case Status.STATUS_COMMITTING:
buffer.append("The indexer is committing");
break;
case Status.STATUS_MARKED_ROLLBACK:
buffer.append("The indexer is marked for rollback");
break;
case Status.STATUS_PREPARED:
buffer.append("The indexer is prepared to commit");
break;
case Status.STATUS_PREPARING:
buffer.append("The indexer is preparing to commit");
break;
case Status.STATUS_ROLLEDBACK:
buffer.append("The indexer has been rolled back");
break;
case Status.STATUS_ROLLING_BACK:
buffer.append("The indexer is rolling back");
break;
case Status.STATUS_UNKNOWN:
buffer.append("The indexer is in an unknown state");
break;
default:
break;
}
return buffer.toString();
}
示例2: rollback
/**
* Roll back the index changes (this just means they are never added)
*
* @throws LuceneIndexException
*/
public void rollback() throws LuceneIndexException
{
switch (getStatus().getStatus())
{
case Status.STATUS_COMMITTED:
throw new IndexerException("Unable to roll back: Transaction is committed ");
case Status.STATUS_ROLLING_BACK:
throw new IndexerException("Unable to roll back: Transaction is rolling back");
case Status.STATUS_ROLLEDBACK:
throw new IndexerException("Unable to roll back: Transaction is already rolled back");
case Status.STATUS_COMMITTING:
// Can roll back during commit
default:
try
{
setStatus(TransactionStatus.ROLLINGBACK);
doRollBack();
setStatus(TransactionStatus.ROLLEDBACK);
}
catch (IOException e)
{
throw new LuceneIndexException("rollback failed ", e);
}
break;
}
}
示例3: setRollbackOnly
public synchronized void setRollbackOnly() throws IllegalStateException, SystemException
{
// just a check
TransactionInfo txnInfo = getTransactionInfo();
int status = getStatus();
// check the status
if (status == Status.STATUS_MARKED_ROLLBACK)
{
// this is acceptable
}
else if (status == Status.STATUS_NO_TRANSACTION)
{
throw new IllegalStateException("The transaction has not been started yet");
}
else if (status == Status.STATUS_ROLLING_BACK || status == Status.STATUS_ROLLEDBACK)
{
throw new IllegalStateException("The transaction has already been rolled back");
}
else if (status == Status.STATUS_COMMITTING || status == Status.STATUS_COMMITTED)
{
throw new IllegalStateException("The transaction has already been committed");
}
else if (status != Status.STATUS_ACTIVE)
{
throw new IllegalStateException("The transaction is not active: " + status);
}
// mark for rollback
txnInfo.getTransactionStatus().setRollbackOnly();
// make sure that we record the fact that we have been marked for rollback
internalStatus = Status.STATUS_MARKED_ROLLBACK;
// done
if (logger.isDebugEnabled())
{
logger.debug("Set transaction status to rollback only: " + this);
}
}
示例4: endTransaction
/**
* End an active transaction
*
* @param sess SrvSession
* @param tx Object
*/
public void endTransaction(SrvSession sess, Object tx) {
// Check that the transaction object is valid
if ( tx == null)
return;
// Get the filesystem transaction
FilesysTransaction filesysTx = (FilesysTransaction) tx;
// Check if there is an active transaction
if ( filesysTx != null && filesysTx.hasTransaction())
{
// Get the active transaction
UserTransaction ftx = filesysTx.getTransaction();
try
{
// Commit or rollback the transaction
if ( ftx.getStatus() == Status.STATUS_MARKED_ROLLBACK ||
ftx.getStatus() == Status.STATUS_ROLLEDBACK ||
ftx.getStatus() == Status.STATUS_ROLLING_BACK)
{
// Transaction is marked for rollback
ftx.rollback();
// DEBUG
if ( logger.isDebugEnabled())
logger.debug("End transaction (rollback)");
}
else
{
// Commit the transaction
ftx.commit();
// DEBUG
if ( logger.isDebugEnabled())
logger.debug("End transaction (commit)");
}
}
catch ( Exception ex)
{
if ( logger.isDebugEnabled())
logger.debug("Failed to end transaction, " + ex.getMessage());
// throw new AlfrescoRuntimeException("Failed to end transaction", ex);
}
finally
{
// Clear the current transaction
sess.clearTransaction();
}
}
}
示例5: commit
/**
* Commit this index
*
* @throws LuceneIndexException
*/
public void commit() throws LuceneIndexException
{
if (s_logger.isDebugEnabled())
{
s_logger.debug(Thread.currentThread().getName() + " Starting Commit");
}
switch (getStatus().getStatus())
{
case Status.STATUS_COMMITTING:
throw new LuceneIndexException("Unable to commit: Transaction is committing");
case Status.STATUS_COMMITTED:
throw new LuceneIndexException("Unable to commit: Transaction is commited ");
case Status.STATUS_ROLLING_BACK:
throw new LuceneIndexException("Unable to commit: Transaction is rolling back");
case Status.STATUS_ROLLEDBACK:
throw new LuceneIndexException("Unable to commit: Transaction is aleady rolled back");
case Status.STATUS_MARKED_ROLLBACK:
throw new LuceneIndexException("Unable to commit: Transaction is marked for roll back");
case Status.STATUS_PREPARING:
throw new LuceneIndexException("Unable to commit: Transaction is preparing");
case Status.STATUS_ACTIVE:
// special case - commit from active
prepare();
// drop through to do the commit;
default:
if (getStatus().getStatus() != Status.STATUS_PREPARED)
{
throw new LuceneIndexException("Index must be prepared to commit");
}
try
{
setStatus(TransactionStatus.COMMITTING);
if (isModified())
{
doCommit();
}
setStatus(TransactionStatus.COMMITTED);
}
catch (LuceneIndexException e)
{
// If anything goes wrong we try and do a roll back
rollback();
if (s_logger.isDebugEnabled())
{
s_logger.debug(Thread.currentThread().getName() + " Commit Failed", e);
}
throw new LuceneIndexException("Commit failed", e);
}
catch (Throwable t)
{
// If anything goes wrong we try and do a roll back
rollback();
if (s_logger.isDebugEnabled())
{
s_logger.debug(Thread.currentThread().getName() + " Commit Failed", t);
}
throw new LuceneIndexException("Commit failed", t);
}
finally
{
if (s_logger.isDebugEnabled())
{
s_logger.debug(Thread.currentThread().getName() + " Ending Commit");
}
// Make sure we tidy up
// deleteDelta();
}
break;
}
}
示例6: prepare
/**
* Prepare to commit At the moment this makes sure we have all the locks TODO: This is not doing proper
* serialisation against the index as would a data base transaction.
*
* @return the tx state
* @throws LuceneIndexException
*/
public int prepare() throws LuceneIndexException
{
if (s_logger.isDebugEnabled())
{
s_logger.debug(Thread.currentThread().getName() + " Starting Prepare");
}
switch (getStatus().getStatus())
{
case Status.STATUS_COMMITTING:
throw new IndexerException("Unable to prepare: Transaction is committing");
case Status.STATUS_COMMITTED:
throw new IndexerException("Unable to prepare: Transaction is commited ");
case Status.STATUS_ROLLING_BACK:
throw new IndexerException("Unable to prepare: Transaction is rolling back");
case Status.STATUS_ROLLEDBACK:
throw new IndexerException("Unable to prepare: Transaction is aleady rolled back");
case Status.STATUS_MARKED_ROLLBACK:
throw new IndexerException("Unable to prepare: Transaction is marked for roll back");
case Status.STATUS_PREPARING:
throw new IndexerException("Unable to prepare: Transaction is already preparing");
case Status.STATUS_PREPARED:
throw new IndexerException("Unable to prepare: Transaction is already prepared");
default:
try
{
setStatus(TransactionStatus.PREPARING);
if (isModified())
{
doPrepare();
if (s_logger.isDebugEnabled())
{
s_logger.debug(Thread.currentThread().getName() + " Waiting to Finish Preparing");
}
}
setStatus(TransactionStatus.PREPARED);
return isModified() ? XAResource.XA_OK : XAResource.XA_RDONLY;
}
catch (LuceneIndexException e)
{
setRollbackOnly();
if (s_logger.isDebugEnabled())
{
s_logger.debug(Thread.currentThread().getName() + " Prepare Failed", e);
}
throw new LuceneIndexException("Index failed to prepare", e);
}
catch (Throwable t)
{
// If anything goes wrong we try and do a roll back
rollback();
if (s_logger.isDebugEnabled())
{
s_logger.debug(Thread.currentThread().getName() + " Prepare Failed", t);
}
throw new LuceneIndexException("Prepared failed", t);
}
finally
{
if (s_logger.isDebugEnabled())
{
s_logger.debug(Thread.currentThread().getName() + " Ending Prepare");
}
}
}
}
示例7: commit
/**
* @throws IllegalStateException if a transaction was not started
*/
public synchronized void commit()
throws RollbackException, HeuristicMixedException, HeuristicRollbackException,
SecurityException, IllegalStateException, SystemException
{
// perform checks
TransactionInfo txnInfo = getTransactionInfo();
int status = getStatus();
// check the status
if (status == Status.STATUS_NO_TRANSACTION)
{
throw new IllegalStateException("The transaction has not yet begun");
}
else if (status == Status.STATUS_ROLLING_BACK || status == Status.STATUS_ROLLEDBACK)
{
throw new RollbackException("The transaction has already been rolled back");
}
else if (status == Status.STATUS_MARKED_ROLLBACK)
{
throw new RollbackException("The transaction has already been marked for rollback");
}
else if (status == Status.STATUS_COMMITTING || status == Status.STATUS_COMMITTED)
{
throw new IllegalStateException("The transaction has already been committed");
}
else if (status != Status.STATUS_ACTIVE || txnInfo == null)
{
throw new IllegalStateException("No user transaction is active");
}
if (!finalized)
{
try
{
// the status seems correct - we can try a commit
commitTransactionAfterReturning(txnInfo);
}
catch (Throwable e)
{
if (logger.isDebugEnabled())
{
logger.debug("Transaction didn't commit", e);
}
// commit failed
internalStatus = Status.STATUS_ROLLEDBACK;
RollbackException re = new RollbackException("Transaction didn't commit: " + e.getMessage());
// Stick the originating reason for failure into the exception.
re.initCause(e);
throw re;
}
finally
{
// make sure that we clean up the stack
cleanupTransactionInfo(txnInfo);
finalized = true;
// clean up leaked transaction logging
isBeginMatched = true;
beginCallStack = null;
}
}
// regardless of whether the transaction was finally committed or not, the status
// as far as UserTransaction is concerned should be 'committed'
// keep track that this UserTransaction was explicitly committed
internalStatus = Status.STATUS_COMMITTED;
// done
if (logger.isDebugEnabled())
{
logger.debug("Committed user transaction: " + this);
}
}
示例8: rollback
public synchronized void rollback()
throws IllegalStateException, SecurityException, SystemException
{
// perform checks
TransactionInfo txnInfo = getTransactionInfo();
int status = getStatus();
// check the status
if (status == Status.STATUS_ROLLING_BACK || status == Status.STATUS_ROLLEDBACK)
{
throw new IllegalStateException("The transaction has already been rolled back");
}
else if (status == Status.STATUS_COMMITTING || status == Status.STATUS_COMMITTED)
{
throw new IllegalStateException("The transaction has already been committed");
}
else if (txnInfo == null)
{
throw new IllegalStateException("No user transaction is active");
}
if (!finalized)
{
try
{
// force a rollback by generating an exception that will trigger a rollback
completeTransactionAfterThrowing(txnInfo, new Exception());
}
finally
{
// make sure that we clean up the stack
cleanupTransactionInfo(txnInfo);
finalized = true;
// clean up leaked transaction logging
isBeginMatched = true;
beginCallStack = null;
}
}
// the internal status notes that we were specifically rolled back
internalStatus = Status.STATUS_ROLLEDBACK;
// done
if (logger.isDebugEnabled())
{
logger.debug("Rolled back user transaction: " + this);
}
}
示例9: isRollback
/**
* Does the given status code indicate a rolled back transaction?
*
* @param status The transaction status code to check
*
* @return True if the code indicates a roll back; false otherwise.
*/
public static boolean isRollback(int status) {
return status == Status.STATUS_MARKED_ROLLBACK ||
status == Status.STATUS_ROLLING_BACK ||
status == Status.STATUS_ROLLEDBACK;
}