[jboss-svn-commits] JBL Code SVN: r37755 - in labs/jbosstm/branches/JBOSSTS_4_15_0_Final: atsintegration/examples/classes/com/arjuna/jta/distributed/example/server and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Dec 1 04:52:45 EST 2011
Author: tomjenkinson
Date: 2011-12-01 04:52:44 -0500 (Thu, 01 Dec 2011)
New Revision: 37755
Added:
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/RemoteServerImpl.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/RemoteServerImpl.java
Modified:
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/LocalServer.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/RemoteServer.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ProxyXAResource.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ServerImpl.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/RemoteServer.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ProxyXAResource.java
labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ServerImpl.java
Log:
JBTM-895 made clearer where the remote side of the work is done
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java 2011-12-01 08:59:36 UTC (rev 37754)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/jca/XATerminatorImple.java 2011-12-01 09:52:44 UTC (rev 37755)
@@ -353,7 +353,7 @@
* @return a list of potentially indoubt transactions or <code>null</code>.
*/
- public synchronized Xid[] doRecover (XidImple toRecover, String parentNodeName) throws XAException
+ public synchronized Xid[] doRecover (Xid xid, String parentNodeName) throws XAException
{
/*
* Requires going through the objectstore for the states of imported
@@ -410,7 +410,7 @@
}
}
- } else if (toRecover == null) {
+ } else if (xid == null) {
TransactionImple tx = (TransactionImple) SubordinationManager.getTransactionImporter().recoverTransaction(uid);
if (tx != null)
@@ -420,8 +420,8 @@
XidImple loadedXid = (XidImple) saa.getXid();
if (loadedXid.getFormatId() == XATxConverter.FORMAT_ID) {
String loadedXidSubordinateNodeName = XATxConverter.getSubordinateNodeName(loadedXid.getXID());
- if (XATxConverter.getSubordinateNodeName(toRecover.getXID()).equals(loadedXidSubordinateNodeName)) {
- if (Arrays.equals(loadedXid.getGlobalTransactionId(), toRecover.getGlobalTransactionId())) {
+ if (XATxConverter.getSubordinateNodeName(new XidImple(xid).getXID()).equals(loadedXidSubordinateNodeName)) {
+ if (Arrays.equals(loadedXid.getGlobalTransactionId(), xid.getGlobalTransactionId())) {
if (jtaLogger.logger.isDebugEnabled()) {
jtaLogger.logger.debug("Found record for " + saa);
}
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/LocalServer.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/LocalServer.java 2011-12-01 08:59:36 UTC (rev 37754)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/LocalServer.java 2011-12-01 09:52:44 UTC (rev 37755)
@@ -111,8 +111,8 @@
* and a potential method of persisting this data). This is important when a
* proxy xa resource is involved in recovery and invokes commit or rollback
* as the transaction must be reloaded by the remote server before the
- * commit/rollback – if it was prepared - before we attempt to complete
- * the transaction.
+ * commit/rollback – if it was prepared - before we attempt to complete the
+ * transaction.
*
* @param remainingTimeout
* @param toImport
@@ -135,8 +135,7 @@
* @throws IOException
* @throws SystemException
*/
- public XAResource generateProxyXAResource(LookupProvider lookupProvider, String remoteServerName, Xid migratedTransaction) throws IOException,
- SystemException;
+ public XAResource generateProxyXAResource(LookupProvider lookupProvider, String remoteServerName, Xid migratedTransaction) throws SystemException;
/**
* Generate a proxy synchronization
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/RemoteServer.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/RemoteServer.java 2011-12-01 08:59:36 UTC (rev 37754)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/RemoteServer.java 2011-12-01 09:52:44 UTC (rev 37755)
@@ -29,13 +29,13 @@
public interface RemoteServer {
- public int prepare(Xid xid, boolean recover) throws XAException, IOException;
+ public int prepare(Xid xid, boolean recover) throws XAException;
- public void commit(Xid xid, boolean onePhase, boolean recover) throws XAException, IOException;
+ public void commit(Xid xid, boolean onePhase, boolean recover) throws XAException;
- public void rollback(Xid xid, boolean recover) throws XAException, IOException;
+ public void rollback(Xid xid, boolean recover) throws XAException;
- public void forget(Xid xid, boolean recover) throws XAException, IOException;
+ public void forget(Xid xid, boolean recover) throws XAException;
public void beforeCompletion(Xid xid) throws XAException, SystemException;
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ProxyXAResource.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ProxyXAResource.java 2011-12-01 08:59:36 UTC (rev 37754)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ProxyXAResource.java 2011-12-01 09:52:44 UTC (rev 37755)
@@ -21,7 +21,6 @@
*/
package com.arjuna.jta.distributed.example.server.impl;
-import java.io.IOException;
import java.io.Serializable;
import javax.transaction.xa.XAException;
@@ -102,13 +101,9 @@
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_PREPARE [" + xid + "]");
Xid toPropagate = migratedXid != null ? migratedXid : xid;
- try {
- int propagatePrepare = LookupProvider.getInstance().lookup(remoteServerName).prepare(toPropagate, !nonerecovered);
- System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_PREPARED");
- return propagatePrepare;
- } catch (IOException e) {
- throw new XAException(XAException.XA_RETRY);
- }
+ int propagatePrepare = LookupProvider.getInstance().lookup(remoteServerName).prepare(toPropagate, !nonerecovered);
+ System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_PREPARED");
+ return propagatePrepare;
}
@Override
@@ -116,12 +111,7 @@
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_COMMIT [" + xid + "]");
Xid toPropagate = migratedXid != null ? migratedXid : xid;
- try {
- LookupProvider.getInstance().lookup(remoteServerName).commit(toPropagate, onePhase, !nonerecovered);
- } catch (IOException e) {
- e.printStackTrace();
- throw new XAException(XAException.XA_RETRY);
- }
+ LookupProvider.getInstance().lookup(remoteServerName).commit(toPropagate, onePhase, !nonerecovered);
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_COMMITED");
}
@@ -139,9 +129,6 @@
// We know that this means that the transaction is not known at
// the remote side
}
- } catch (IOException e) {
- e.printStackTrace();
- throw new XAException(XAException.XA_RETRY);
}
}
@@ -186,11 +173,7 @@
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_FORGET [" + xid + "]");
Xid toPropagate = migratedXid != null ? migratedXid : xid;
- try {
- LookupProvider.getInstance().lookup(remoteServerName).forget(toPropagate, !nonerecovered);
- } catch (IOException e) {
- throw new XAException(XAException.XA_RETRY);
- }
+ LookupProvider.getInstance().lookup(remoteServerName).forget(toPropagate, !nonerecovered);
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_FORGETED[" + xid + "]");
}
Added: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/RemoteServerImpl.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/RemoteServerImpl.java (rev 0)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/RemoteServerImpl.java 2011-12-01 09:52:44 UTC (rev 37755)
@@ -0,0 +1,165 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This 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 software 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 software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package com.arjuna.jta.distributed.example.server.impl;
+
+import java.util.Arrays;
+import java.util.Set;
+
+import javax.transaction.SystemException;
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.Xid;
+
+import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinationManager;
+import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple;
+import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.XATerminatorImple;
+import com.arjuna.jta.distributed.example.server.RemoteServer;
+
+/**
+ * This class could translate quite easily to a server-side network endpoint
+ * interceptor for the client-side ProxyXAResource. One change that is required
+ * is to remove the classloader behavior as that is purely to allow the test to
+ * run multiple servers within a single VM. When reading this class, tend to
+ * ignore the classloader work as that is test scaffolding.
+ */
+public class RemoteServerImpl implements RemoteServer {
+ /**
+ * Remember to ignore the classloader shenanigans when reading the method.
+ *
+ * @param recover
+ * Should be set by the clients ProxyXAResource when the client
+ * knows the remote side needs the transaction loading.
+ */
+ @Override
+ public int prepare(Xid xid, boolean recover) throws XAException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ if (recover) {
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(xid, null);
+ }
+ return SubordinationManager.getXATerminator().prepare(xid);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+ }
+
+ /**
+ * Remember to ignore the classloader shenanigans when reading the method.
+ *
+ * @param recover
+ * Should be set by the clients ProxyXAResource when the client
+ * knows the remote side needs the transaction loading.
+ */
+ @Override
+ public void commit(Xid xid, boolean onePhase, boolean recover) throws XAException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ if (recover) {
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(xid, null);
+ }
+ SubordinationManager.getXATerminator().commit(xid, onePhase);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+ }
+
+ /**
+ * Remember to ignore the classloader shenanigans when reading the method.
+ *
+ * @param recover
+ * Should be set by the clients ProxyXAResource when the client
+ * knows the remote side needs the transaction loading.
+ */
+ @Override
+ public void rollback(Xid xid, boolean recover) throws XAException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ if (recover) {
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(xid, null);
+ }
+ SubordinationManager.getXATerminator().rollback(xid);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+ }
+
+ /**
+ * Remember to ignore the classloader shenanigans when reading the method.
+ *
+ * @param recover
+ * Should be set by the clients ProxyXAResource when the client
+ * knows the remote side needs the transaction loading.
+ */
+ @Override
+ public void forget(Xid xid, boolean recover) throws XAException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ if (recover) {
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(xid, null);
+ }
+ SubordinationManager.getXATerminator().forget(xid);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+
+ }
+
+ /**
+ * Remember to ignore the classloader shenanigans when reading the method.
+ *
+ * @param recover
+ * Should be set by the clients ProxyXAResource when the client
+ * knows the remote side needs the transaction loading.
+ */
+ @Override
+ public void beforeCompletion(Xid xid) throws XAException, SystemException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).beforeCompletion(xid);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+ }
+
+ /**
+ * Remember to ignore the classloader shenanigans when reading the method.
+ */
+ @Override
+ public Xid[] recoverFor(String localServerName) throws XAException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ Set<Xid> toReturn = ((TransactionImporterImple) SubordinationManager.getTransactionImporter()).getInflightXids(localServerName);
+ Xid[] doRecover = ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(null, localServerName);
+ if (doRecover != null) {
+ toReturn.addAll(Arrays.asList(doRecover));
+ }
+ return toReturn.toArray(new Xid[0]);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+ }
+}
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ServerImpl.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ServerImpl.java 2011-12-01 08:59:36 UTC (rev 37754)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/examples/classes/com/arjuna/jta/distributed/example/server/impl/ServerImpl.java 2011-12-01 09:52:44 UTC (rev 37755)
@@ -24,12 +24,11 @@
import java.io.IOException;
import java.net.InetAddress;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
+import javax.transaction.InvalidTransactionException;
import javax.transaction.Synchronization;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
@@ -50,18 +49,15 @@
import com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple;
import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinateXidImple;
import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinationManager;
-import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple;
-import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.XATerminatorImple;
import com.arjuna.ats.jbossatx.jta.RecoveryManagerService;
import com.arjuna.ats.jbossatx.jta.TransactionManagerService;
import com.arjuna.ats.jta.common.JTAEnvironmentBean;
-import com.arjuna.ats.jta.xa.XidImple;
import com.arjuna.jta.distributed.example.TestResourceRecovery;
import com.arjuna.jta.distributed.example.server.LocalServer;
import com.arjuna.jta.distributed.example.server.LookupProvider;
import com.arjuna.jta.distributed.example.server.RemoteServer;
-public class ServerImpl implements LocalServer, RemoteServer {
+public class ServerImpl implements LocalServer {
private String nodeName;
private RecoveryManagerService recoveryManagerService;
@@ -162,7 +158,7 @@
}
@Override
- public Xid getAndResumeTransaction(int remainingTimeout, Xid toResume) throws XAException, IllegalStateException, SystemException, IOException {
+ public Xid getAndResumeTransaction(int remainingTimeout, Xid toResume) throws XAException, IllegalStateException, SystemException, InvalidTransactionException {
Xid toReturn = null;
Transaction transaction = rootTransactionsAsSubordinate.get(new SubordinateXidImple(toResume));
if (transaction == null) {
@@ -200,7 +196,7 @@
}
@Override
- public ProxyXAResource generateProxyXAResource(LookupProvider lookupProvider, String remoteServerName, Xid migratedXid) throws SystemException, IOException {
+ public ProxyXAResource generateProxyXAResource(LookupProvider lookupProvider, String remoteServerName, Xid migratedXid) throws SystemException {
return new ProxyXAResource(getNodeName(), remoteServerName, migratedXid);
}
@@ -211,88 +207,6 @@
@Override
public RemoteServer connectTo() {
- return this;
+ return new RemoteServerImpl();
}
-
- @Override
- public int prepare(Xid xid, boolean recover) throws XAException, IOException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- if (recover) {
- recover(xid);
- }
- return SubordinationManager.getXATerminator().prepare(xid);
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
- }
-
- @Override
- public void commit(Xid xid, boolean onePhase, boolean recover) throws XAException, IOException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- if (recover) {
- recover(xid);
- }
- SubordinationManager.getXATerminator().commit(xid, onePhase);
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
- }
-
- @Override
- public void rollback(Xid xid, boolean recover) throws XAException, IOException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- if (recover) {
- recover(xid);
- }
- SubordinationManager.getXATerminator().rollback(xid);
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
- }
-
- protected void recover(Xid toRecover) throws XAException, IOException {
- ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(new XidImple(toRecover), null);
- }
-
- @Override
- public void forget(Xid xid, boolean recover) throws XAException, IOException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- if (recover) {
- recover(xid);
- }
- SubordinationManager.getXATerminator().forget(xid);
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
-
- }
-
- @Override
- public void beforeCompletion(Xid xid) throws XAException, SystemException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- ((XATerminatorImple) SubordinationManager.getXATerminator()).beforeCompletion(xid);
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
- }
-
- @Override
- public Xid[] recoverFor(String localServerName) throws XAException {
- Set<Xid> toReturn = ((TransactionImporterImple) SubordinationManager.getTransactionImporter()).getInflightXids(localServerName);
- Xid[] doRecover = ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(null, localServerName);
- if (doRecover != null) {
- toReturn.addAll(Arrays.asList(doRecover));
- }
- return toReturn.toArray(new Xid[0]);
- }
}
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/RemoteServer.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/RemoteServer.java 2011-12-01 08:59:36 UTC (rev 37754)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/RemoteServer.java 2011-12-01 09:52:44 UTC (rev 37755)
@@ -21,21 +21,19 @@
*/
package com.arjuna.ats.jta.distributed.server;
-import java.io.IOException;
-
import javax.transaction.SystemException;
import javax.transaction.xa.XAException;
import javax.transaction.xa.Xid;
public interface RemoteServer {
- public int prepare(Xid xid, boolean recover) throws XAException, IOException;
+ public int prepare(Xid xid, boolean recover) throws XAException;
- public void commit(Xid xid, boolean onePhase, boolean recover) throws XAException, IOException;
+ public void commit(Xid xid, boolean onePhase, boolean recover) throws XAException;
- public void rollback(Xid xid, boolean recover) throws XAException, IOException;
+ public void rollback(Xid xid, boolean recover) throws XAException;
- public void forget(Xid xid, boolean recover) throws XAException, IOException;
+ public void forget(Xid xid, boolean recover) throws XAException;
public void beforeCompletion(Xid xid) throws XAException, SystemException;
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ProxyXAResource.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ProxyXAResource.java 2011-12-01 08:59:36 UTC (rev 37754)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ProxyXAResource.java 2011-12-01 09:52:44 UTC (rev 37755)
@@ -21,7 +21,6 @@
*/
package com.arjuna.ats.jta.distributed.server.impl;
-import java.io.IOException;
import java.io.Serializable;
import javax.transaction.xa.XAException;
@@ -103,13 +102,9 @@
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_PREPARE [" + xid + "]");
Xid toPropagate = migratedXid != null ? migratedXid : xid;
- try {
- int propagatePrepare = LookupProvider.getInstance().lookup(remoteServerName).prepare(toPropagate, !nonerecovered);
- System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_PREPARED");
- return propagatePrepare;
- } catch (IOException e) {
- throw new XAException(XAException.XA_RETRY);
- }
+ int propagatePrepare = LookupProvider.getInstance().lookup(remoteServerName).prepare(toPropagate, !nonerecovered);
+ System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_PREPARED");
+ return propagatePrepare;
}
@Override
@@ -117,15 +112,9 @@
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_COMMIT [" + xid + "]");
Xid toPropagate = migratedXid != null ? migratedXid : xid;
- try {
- LookupProvider.getInstance().lookup(remoteServerName).commit(toPropagate, onePhase, !nonerecovered);
- } catch (IOException e) {
- e.printStackTrace();
- throw new XAException(XAException.XA_RETRY);
- }
+ LookupProvider.getInstance().lookup(remoteServerName).commit(toPropagate, onePhase, !nonerecovered);
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_COMMITED");
- // THIS CAN ONLY HAPPEN IN 1PC OR ROLLBACK
CompletionCounter.getInstance().incrementCommit(localServerName);
}
@@ -144,9 +133,6 @@
// We know that this means that the transaction is not known at
// the remote side
}
- } catch (IOException e) {
- e.printStackTrace();
- throw new XAException(XAException.XA_RETRY);
}
CompletionCounter.getInstance().incrementRollback(localServerName);
@@ -193,11 +179,7 @@
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_FORGET [" + xid + "]");
Xid toPropagate = migratedXid != null ? migratedXid : xid;
- try {
- LookupProvider.getInstance().lookup(remoteServerName).forget(toPropagate, !nonerecovered);
- } catch (IOException e) {
- throw new XAException(XAException.XA_RETRY);
- }
+ LookupProvider.getInstance().lookup(remoteServerName).forget(toPropagate, !nonerecovered);
System.out.println(" ProxyXAResource (" + localServerName + ":" + remoteServerName + ") XA_FORGETED[" + xid + "]");
}
Added: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/RemoteServerImpl.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/RemoteServerImpl.java (rev 0)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/RemoteServerImpl.java 2011-12-01 09:52:44 UTC (rev 37755)
@@ -0,0 +1,120 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This 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 software 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 software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package com.arjuna.ats.jta.distributed.server.impl;
+
+import java.util.Arrays;
+import java.util.Set;
+
+import javax.transaction.SystemException;
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.Xid;
+
+import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.SubordinationManager;
+import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.TransactionImporterImple;
+import com.arjuna.ats.internal.jta.transaction.arjunacore.jca.XATerminatorImple;
+import com.arjuna.ats.jta.distributed.server.RemoteServer;
+
+public class RemoteServerImpl implements RemoteServer {
+ @Override
+ public int prepare(Xid xid, boolean recover) throws XAException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ if (recover) {
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(xid, null);
+ }
+ return SubordinationManager.getXATerminator().prepare(xid);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+ }
+
+ @Override
+ public void commit(Xid xid, boolean onePhase, boolean recover) throws XAException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ if (recover) {
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(xid, null);
+ }
+ SubordinationManager.getXATerminator().commit(xid, onePhase);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+ }
+
+ @Override
+ public void rollback(Xid xid, boolean recover) throws XAException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ if (recover) {
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(xid, null);
+ }
+ SubordinationManager.getXATerminator().rollback(xid);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+ }
+
+ @Override
+ public void forget(Xid xid, boolean recover) throws XAException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ if (recover) {
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(xid, null);
+ }
+ SubordinationManager.getXATerminator().forget(xid);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+
+ }
+
+ @Override
+ public void beforeCompletion(Xid xid) throws XAException, SystemException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ ((XATerminatorImple) SubordinationManager.getXATerminator()).beforeCompletion(xid);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+ }
+
+ @Override
+ public Xid[] recoverFor(String localServerName) throws XAException {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ Set<Xid> toReturn = ((TransactionImporterImple) SubordinationManager.getTransactionImporter()).getInflightXids(localServerName);
+ Xid[] doRecover = ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(null, localServerName);
+ if (doRecover != null) {
+ toReturn.addAll(Arrays.asList(doRecover));
+ }
+ return toReturn.toArray(new Xid[0]);
+ } finally {
+ Thread.currentThread().setContextClassLoader(contextClassLoader);
+ }
+ }
+}
Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ServerImpl.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ServerImpl.java 2011-12-01 08:59:36 UTC (rev 37754)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/server/impl/ServerImpl.java 2011-12-01 09:52:44 UTC (rev 37755)
@@ -67,7 +67,7 @@
import com.arjuna.ats.jta.distributed.server.RemoteServer;
import com.arjuna.ats.jta.xa.XidImple;
-public class ServerImpl implements LocalServer, RemoteServer {
+public class ServerImpl implements LocalServer {
private String nodeName;
private RecoveryManagerService recoveryManagerService;
@@ -264,88 +264,8 @@
@Override
public RemoteServer connectTo() {
- return this;
+ return new RemoteServerImpl();
}
- @Override
- public int prepare(Xid xid, boolean recover) throws XAException, IOException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- if (recover) {
- recover(xid);
- }
- return SubordinationManager.getXATerminator().prepare(xid);
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
- }
- @Override
- public void commit(Xid xid, boolean onePhase, boolean recover) throws XAException, IOException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- if (recover) {
- recover(xid);
- }
- SubordinationManager.getXATerminator().commit(xid, onePhase);
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
- }
-
- @Override
- public void rollback(Xid xid, boolean recover) throws XAException, IOException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- if (recover) {
- recover(xid);
- }
- SubordinationManager.getXATerminator().rollback(xid);
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
- }
-
- protected void recover(Xid toRecover) throws XAException, IOException {
- ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(new XidImple(toRecover), null);
- }
-
- @Override
- public void forget(Xid xid, boolean recover) throws XAException, IOException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- if (recover) {
- recover(xid);
- }
- SubordinationManager.getXATerminator().forget(xid);
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
-
- }
-
- @Override
- public void beforeCompletion(Xid xid) throws XAException, SystemException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- ((XATerminatorImple) SubordinationManager.getXATerminator()).beforeCompletion(xid);
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
- }
-
- @Override
- public Xid[] recoverFor(String localServerName) throws XAException {
- Set<Xid> toReturn = ((TransactionImporterImple) SubordinationManager.getTransactionImporter()).getInflightXids(localServerName);
- Xid[] doRecover = ((XATerminatorImple) SubordinationManager.getXATerminator()).doRecover(null, localServerName);
- if (doRecover != null) {
- toReturn.addAll(Arrays.asList(doRecover));
- }
- return toReturn.toArray(new Xid[0]);
- }
}
More information about the jboss-svn-commits
mailing list