//jTDS JDBC Driver for Microsoft SQL Server and Sybase //Copyright (C) 2004 The jTDS Project // //This library is free software; you can redistribute it and/or //modify it under the terms of the GNU Lesser General Public //License as published by the Free Software Foundation; either //version 2.1 of the License, or (at your option) any later version. // //This library is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU //Lesser General Public License for more details. // //You should have received a copy of the GNU Lesser General Public //License along with this library; if not, write to the Free Software //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package net.sourceforge.jtds.jdbcx; import java.sql.Connection; import javax.transaction.xa.XAException; import javax.transaction.xa.XAResource; import javax.transaction.xa.Xid; import net.sourceforge.jtds.jdbc.JtdsConnection; import net.sourceforge.jtds.jdbc.XASupport; import net.sourceforge.jtds.util.Logger; /** * jTDS implementation of the XAResource interface. * * @version $Id: JtdsXAResource.java,v 1.4 2005-04-28 14:29:30 alin_sinpalean Exp $ */ public class JtdsXAResource implements XAResource { private final Connection connection; private final JtdsXAConnection xaConnection; private final String rmHost; public JtdsXAResource(JtdsXAConnection xaConnection, Connection connection) { this.xaConnection = xaConnection; this.connection = connection; rmHost = ((JtdsConnection) connection).getRmHost(); Logger.println("JtdsXAResource created"); } protected JtdsXAConnection getResourceManager() { return xaConnection; } protected String getRmHost() { return this.rmHost; } // // ------------------- javax.transaction.xa.XAResource interface methods ------------------- // public int getTransactionTimeout() throws XAException { Logger.println("XAResource.getTransactionTimeout()"); return 0; } public boolean setTransactionTimeout(int arg0) throws XAException { Logger.println("XAResource.setTransactionTimeout("+arg0+')'); return false; } public boolean isSameRM(XAResource xares) throws XAException { Logger.println("XAResource.isSameRM("+xares.toString()+')'); if (xares instanceof JtdsXAResource) { if (((JtdsXAResource)xares).getRmHost().equals(this.rmHost)) { return true; } } return false; } public Xid[] recover(int flags) throws XAException { Logger.println("XAResource.recover("+flags+')'); return XASupport.xa_recover(connection, xaConnection.getXAConnectionID(), flags); } public int prepare(Xid xid) throws XAException { Logger.println("XAResource.prepare("+xid.toString()+')'); return XASupport.xa_prepare(connection, xaConnection.getXAConnectionID(), xid); } public void forget(Xid xid) throws XAException { Logger.println("XAResource.forget(" + xid + ')'); XASupport.xa_forget(connection, xaConnection.getXAConnectionID(), xid); } public void rollback(Xid xid) throws XAException { Logger.println("XAResource.rollback(" +xid.toString()+')'); XASupport.xa_rollback(connection, xaConnection.getXAConnectionID(), xid); } public void end(Xid xid, int flags) throws XAException { Logger.println("XAResource.end(" +xid.toString()+')'); XASupport.xa_end(connection, xaConnection.getXAConnectionID(), xid, flags); } public void start(Xid xid, int flags) throws XAException { Logger.println("XAResource.start(" +xid.toString()+','+flags+')'); XASupport.xa_start(connection, xaConnection.getXAConnectionID(), xid, flags); } public void commit(Xid xid, boolean commit) throws XAException { Logger.println("XAResource.commit(" +xid.toString()+','+commit+')'); XASupport.xa_commit(connection, xaConnection.getXAConnectionID(), xid, commit); } }