Transaction.java
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:3k
源码类别:

中间件编程

开发平台:

Java

  1. /*
  2.  * JBoss, Home of Professional Open Source
  3.  * Copyright 2008, Red Hat, Inc., and others contributors as indicated
  4.  * by the @authors tag. All rights reserved.
  5.  * See the copyright.txt in the distribution for a
  6.  * full listing of individual contributors.
  7.  * This copyrighted material is made available to anyone wishing to use,
  8.  * modify, copy, or redistribute it subject to the terms and conditions
  9.  * of the GNU Lesser General Public License, v. 2.1.
  10.  * This program is distributed in the hope that it will be useful, but WITHOUT A
  11.  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  12.  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  13.  * You should have received a copy of the GNU Lesser General Public License,
  14.  * v.2.1 along with this distribution; if not, write to the Free Software
  15.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  16.  * MA  02110-1301, USA.
  17.  */
  18. package org.jboss.blacktie.jatmibroker.jab.factory;
  19. import org.jboss.blacktie.jatmibroker.jab.JABException;
  20. import org.jboss.blacktie.jatmibroker.jab.JABSession;
  21. import org.jboss.blacktie.jatmibroker.jab.JABTransaction;
  22. import org.jboss.blacktie.jatmibroker.jab.TransactionException;
  23. /**
  24.  * The JABTransaction provides the programmer access to the underlying
  25.  * transaction object it can be committed or rolled back at most once.
  26.  * 
  27.  * @see JABConnection
  28.  */
  29. public class Transaction {
  30. /**
  31.  * The connection that created the transaction, the transaction must be
  32.  * disassociated from the connection upon completion
  33.  */
  34. private JABConnection connection;
  35. /**
  36.  * The real transaction wrapper
  37.  */
  38. private JABTransaction jabTransaction;
  39. /**
  40.  * The constructor is hidden from the programmer as it should be created
  41.  * using the factory method beginTransaction of JABConnection
  42.  * 
  43.  * @param connection
  44.  *            The connection that initialised this transaction
  45.  * @param timeout
  46.  *            The timeout for the transaction
  47.  * @throws JABException
  48.  *             In case the transaction cannot be created
  49.  */
  50. Transaction(JABConnection connection, JABSession session, int timeout)
  51. throws TransactionException {
  52. this.connection = connection;
  53. try {
  54. this.jabTransaction = new JABTransaction(session, timeout);
  55. } catch (Throwable e) {
  56. throw new TransactionException("Could not create the transaction: "
  57. + e.getMessage(), e);
  58. }
  59. }
  60. /**
  61.  * Commit the work performed within the scope of this transaction
  62.  * 
  63.  * @throws JABException
  64.  *             In case the transaction cannot be committed
  65.  */
  66. public synchronized void commit() throws TransactionException {
  67. jabTransaction.commit();
  68. connection.removeTransaction(this);
  69. }
  70. /**
  71.  * Discard the work associated with this transaction
  72.  * 
  73.  * @throws JABException
  74.  *             In case the transaction cannot be rolled back successfully
  75.  */
  76. public synchronized void rollback() throws TransactionException {
  77. jabTransaction.rollback();
  78. connection.removeTransaction(this);
  79. }
  80. /**
  81.  * Get the transaction wrapper
  82.  * 
  83.  * @return The transaction wrapper
  84.  */
  85. JABTransaction getJABTransaction() {
  86. return jabTransaction;
  87. }
  88. }