001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package javax.transaction;
023:
024: import java.lang.SecurityException;
025: import javax.transaction.xa.XAResource;
026:
027: /**
028: * The Transaction interface allows operations to be performed on
029: * transactions.
030: *
031: * @version $Revision: 57196 $
032: */
033: public interface Transaction {
034: /**
035: * Attempt to commit this transaction.
036: *
037: * @throws RollbackException If the transaction was marked for rollback
038: * only, the transaction is rolled back and this exception is
039: * thrown.
040: * @throws SystemException If the transaction service fails in an
041: * unexpected way.
042: * @throws HeuristicMixedException If a heuristic decision was made and
043: * some some parts of the transaction have been committed while
044: * other parts have been rolled back.
045: * @throws HeuristicRollbackException If a heuristic decision to roll
046: * back the transaction was made.
047: * @throws SecurityException If the caller is not allowed to commit this
048: * transaction.
049: */
050: public void commit() throws RollbackException,
051: HeuristicMixedException, HeuristicRollbackException,
052: SecurityException, SystemException;
053:
054: /**
055: * Rolls back this transaction.
056: *
057: * @throws IllegalStateException If the transaction is in a state
058: * where it cannot be rolled back. This could be because the
059: * transaction is no longer active, or because it is in the
060: * {@link Status#STATUS_PREPARED prepared state}.
061: * @throws SystemException If the transaction service fails in an
062: * unexpected way.
063: */
064: public void rollback() throws IllegalStateException,
065: SystemException;
066:
067: /**
068: * Mark the transaction so that the only possible outcome is a rollback.
069: *
070: * @throws IllegalStateException If the transaction is not in an active
071: * state.
072: * @throws SystemException If the transaction service fails in an
073: * unexpected way.
074: */
075: public void setRollbackOnly() throws IllegalStateException,
076: SystemException;
077:
078: /**
079: * Get the status of the transaction.
080: *
081: * @return The status of the transaction. This is one of the
082: * {@link Status} constants.
083: *
084: * @throws SystemException If the transaction service fails in an
085: * unexpected way.
086: */
087: public int getStatus() throws SystemException;
088:
089: /**
090: * Enlist an XA resource with this transaction.
091: *
092: * @return <code>true</code> if the resource could be enlisted with
093: * this transaction, otherwise <code>false</code>.
094: *
095: * @throws RollbackException If the transaction is marked for rollback
096: * only.
097: * @throws IllegalStateException If the transaction is in a state
098: * where resources cannot be enlisted. This could be because the
099: * transaction is no longer active, or because it is in the
100: * {@link Status#STATUS_PREPARED prepared state}.
101: * @throws SystemException If the transaction service fails in an
102: * unexpected way.
103: */
104: public boolean enlistResource(XAResource xaRes)
105: throws RollbackException, IllegalStateException,
106: SystemException;
107:
108: /**
109: * Delist an XA resource from this transaction.
110: *
111: * @return <code>true</code> if the resource could be delisted from
112: * this transaction, otherwise <code>false</code>.
113: *
114: * @throws IllegalStateException If the transaction is in a state
115: * where resources cannot be delisted. This could be because the
116: * transaction is no longer active.
117: * @throws SystemException If the transaction service fails in an
118: * unexpected way.
119: */
120: public boolean delistResource(XAResource xaRes, int flag)
121: throws IllegalStateException, SystemException;
122:
123: /**
124: * Register a {@link Synchronization} callback with this transaction.
125: *
126: * @throws RollbackException If the transaction is marked for rollback
127: * only.
128: * @throws IllegalStateException If the transaction is in a state
129: * where {@link Synchronization} callbacks cannot be registered.
130: * This could be because the transaction is no longer active,
131: * or because it is in the
132: * {@link Status#STATUS_PREPARED prepared state}.
133: * @throws SystemException If the transaction service fails in an
134: * unexpected way.
135: */
136: public void registerSynchronization(Synchronization sync)
137: throws RollbackException, IllegalStateException,
138: SystemException;
139: }
|