001: //jTDS JDBC Driver for Microsoft SQL Server and Sybase
002: //Copyright (C) 2004 The jTDS Project
003: //
004: //This library is free software; you can redistribute it and/or
005: //modify it under the terms of the GNU Lesser General Public
006: //License as published by the Free Software Foundation; either
007: //version 2.1 of the License, or (at your option) any later version.
008: //
009: //This library is distributed in the hope that it will be useful,
010: //but WITHOUT ANY WARRANTY; without even the implied warranty of
011: //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: //Lesser General Public License for more details.
013: //
014: //You should have received a copy of the GNU Lesser General Public
015: //License along with this library; if not, write to the Free Software
016: //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017: //
018: package net.sourceforge.jtds.jdbcx;
019:
020: import java.sql.Connection;
021: import javax.transaction.xa.XAException;
022: import javax.transaction.xa.XAResource;
023: import javax.transaction.xa.Xid;
024:
025: import net.sourceforge.jtds.jdbc.ConnectionJDBC2;
026: import net.sourceforge.jtds.jdbc.XASupport;
027: import net.sourceforge.jtds.util.Logger;
028:
029: /**
030: * jTDS implementation of the XAResource interface.
031: *
032: * @version $Id: JtdsXAResource.java,v 1.4 2005/04/28 14:29:30 alin_sinpalean Exp $
033: */
034: public class JtdsXAResource implements XAResource {
035: private final Connection connection;
036: private final JtdsXAConnection xaConnection;
037: private final String rmHost;
038:
039: public JtdsXAResource(JtdsXAConnection xaConnection,
040: Connection connection) {
041: this .xaConnection = xaConnection;
042: this .connection = connection;
043: rmHost = ((ConnectionJDBC2) connection).getRmHost();
044: Logger.println("JtdsXAResource created");
045: }
046:
047: protected JtdsXAConnection getResourceManager() {
048: return xaConnection;
049: }
050:
051: protected String getRmHost() {
052: return this .rmHost;
053: }
054:
055: //
056: // ------------------- javax.transaction.xa.XAResource interface methods -------------------
057: //
058:
059: public int getTransactionTimeout() throws XAException {
060: Logger.println("XAResource.getTransactionTimeout()");
061: return 0;
062: }
063:
064: public boolean setTransactionTimeout(int arg0) throws XAException {
065: Logger
066: .println("XAResource.setTransactionTimeout(" + arg0
067: + ')');
068: return false;
069: }
070:
071: public boolean isSameRM(XAResource xares) throws XAException {
072: Logger.println("XAResource.isSameRM(" + xares.toString() + ')');
073: if (xares instanceof JtdsXAResource) {
074: if (((JtdsXAResource) xares).getRmHost()
075: .equals(this .rmHost)) {
076: return true;
077: }
078: }
079: return false;
080: }
081:
082: public Xid[] recover(int flags) throws XAException {
083: Logger.println("XAResource.recover(" + flags + ')');
084: return XASupport.xa_recover(connection, xaConnection
085: .getXAConnectionID(), flags);
086: }
087:
088: public int prepare(Xid xid) throws XAException {
089: Logger.println("XAResource.prepare(" + xid.toString() + ')');
090: return XASupport.xa_prepare(connection, xaConnection
091: .getXAConnectionID(), xid);
092: }
093:
094: public void forget(Xid xid) throws XAException {
095: Logger.println("XAResource.forget(" + xid + ')');
096: XASupport.xa_forget(connection, xaConnection
097: .getXAConnectionID(), xid);
098: }
099:
100: public void rollback(Xid xid) throws XAException {
101: Logger.println("XAResource.rollback(" + xid.toString() + ')');
102: XASupport.xa_rollback(connection, xaConnection
103: .getXAConnectionID(), xid);
104: }
105:
106: public void end(Xid xid, int flags) throws XAException {
107: Logger.println("XAResource.end(" + xid.toString() + ')');
108: XASupport.xa_end(connection, xaConnection.getXAConnectionID(),
109: xid, flags);
110: }
111:
112: public void start(Xid xid, int flags) throws XAException {
113: Logger.println("XAResource.start(" + xid.toString() + ','
114: + flags + ')');
115: XASupport.xa_start(connection,
116: xaConnection.getXAConnectionID(), xid, flags);
117: }
118:
119: public void commit(Xid xid, boolean commit) throws XAException {
120: Logger.println("XAResource.commit(" + xid.toString() + ','
121: + commit + ')');
122: XASupport.xa_commit(connection, xaConnection
123: .getXAConnectionID(), xid, commit);
124: }
125:
126: }
|