Author: dasarath
Date: Fri Dec 30 19:58:01 2005
New Revision: 360232
URL: http://svn.apache.org/viewcvs?rev=360232&view=rev
Log: (empty)
Modified:
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/j2ee/Bridge.java
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/j2ee/Mediator.java
Modified:
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/j2ee/Bridge.java
URL:
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/j2ee/Bridge.java?rev=360232&r1=360231&r2=360232&view=diff
==============================================================================
---
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/j2ee/Bridge.java
(original)
+++
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/j2ee/Bridge.java
Fri Dec 30 19:58:01 2005
@@ -24,7 +24,7 @@
private static Bridge instance = new Bridge();
- private static final int TIMEOUT = 60 * 60;
+ private static final int TIMEOUT_S = 60 * 60;
public static Bridge getInstance() {
return instance;
@@ -36,7 +36,7 @@
private Bridge() {
try {
- tm = new TransactionManagerImpl(TIMEOUT, null, null);
+ tm = new TransactionManagerImpl(TIMEOUT_S, null, null);
} catch (XAException e) {
e.printStackTrace();
throw new RuntimeException(e);
@@ -79,9 +79,5 @@
public void forget(String id) {
inM.remove(id);
- }
-
- public boolean isMapped(String id) {
- return inM.containsKey(id);
}
}
Modified:
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/j2ee/Mediator.java
URL:
http://svn.apache.org/viewcvs/webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/j2ee/Mediator.java?rev=360232&r1=360231&r2=360232&view=diff
==============================================================================
---
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/j2ee/Mediator.java
(original)
+++
webservices/kandula/branches/Kandula_1/src/java/org/apache/ws/transaction/j2ee/Mediator.java
Fri Dec 30 19:58:01 2005
@@ -7,26 +7,23 @@
import java.rmi.RemoteException;
import javax.transaction.Status;
+import javax.transaction.SystemException;
import javax.transaction.Transaction;
import javax.transaction.xa.XAException;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
-import org.apache.axis.message.addressing.EndpointReference;
import org.apache.geronimo.transaction.manager.NamedXAResource;
import org.apache.geronimo.transaction.manager.TransactionManagerImpl;
import org.apache.ws.transaction.coordinator.CoordinationContext;
-import org.apache.ws.transaction.coordinator.ParticipantService;
-import org.apache.ws.transaction.coordinator.at.ATCoordinator;
-import org.apache.ws.transaction.coordinator.at.CoordinatorStub;
-import org.apache.ws.transaction.wsat.Notification;
-import org.apache.ws.transaction.wsat.ParticipantPortType;
+import org.apache.ws.transaction.coordinator.at.AT2PCStatus;
+import org.apache.ws.transaction.coordinator.at.BasicParticipant;
/**
* @author Dasarath Weeratunge
*
*/
-public class Mediator implements ParticipantPortType, NamedXAResource {
+public class Mediator extends BasicParticipant implements NamedXAResource {
private int timeout = Integer.MAX_VALUE;
@@ -34,19 +31,17 @@
private Transaction tx;
- private EndpointReference c;
-
private Bridge bridge = Bridge.getInstance();
private TransactionManagerImpl tm = (TransactionManagerImpl)
bridge.getTM();
+ private boolean bridged = true;
+
public Mediator(Transaction tx, CoordinationContext ctx)
throws RemoteException {
+ super(true, ctx);
id = ctx.getIdentifier().toString();
this.tx = tx;
- EndpointReference epr =
ParticipantService.getInstance().getParticipantService(
- this);
- c = ctx.register(ATCoordinator.PROTOCOL_ID_DURABLE_2PC, epr);
try {
tx.enlistResource(this);
} catch (Exception e) {
@@ -55,11 +50,13 @@
}
public void commit(Xid arg0, boolean arg1) throws XAException {
- if (bridge.isMapped(id))
+ if (bridged) {
+ forget();
try {
- new CoordinatorStub(c).committedOperation(null);
+ getCoordinator().committedOperation(null);
} catch (Exception e) {
}
+ }
}
public void end(Xid arg0, int arg1) throws XAException {
@@ -76,14 +73,15 @@
return timeout;
}
- public boolean isSameRM(XAResource arg0) throws XAException {
- return this == arg0;
+ public boolean isSameRM(XAResource rm) throws XAException {
+ return this == rm;
}
public int prepare(Xid arg0) throws XAException {
- if (bridge.isMapped(id)) {
+ if (bridged) {
+ forget();
try {
- new CoordinatorStub(c).abortedOperation(null);
+ getCoordinator().abortedOperation(null);
} catch (Exception e) {
}
throw new XAException();
@@ -96,111 +94,74 @@
}
public void rollback(Xid arg0) throws XAException {
- if (bridge.isMapped(id))
+ if (bridged) {
+ forget();
try {
- new CoordinatorStub(c).abortedOperation(null);
+ getCoordinator().abortedOperation(null);
} catch (Exception e) {
}
+ }
}
- public boolean setTransactionTimeout(int arg0) throws XAException {
- timeout = arg0;
- return false;
+ public boolean setTransactionTimeout(int timeout) throws XAException {
+ this.timeout = timeout;
+ return true;
}
public void start(Xid arg0, int arg1) throws XAException {
}
- public synchronized void commitOperation(Notification parameters)
- throws RemoteException {
- done();
- try {
- tm.commit(tx, false);
- new CoordinatorStub(c).committedOperation(null);
- } catch (RemoteException e) {
- e.printStackTrace();
- throw e;
- } catch (Exception e) {
- e.printStackTrace();
- throw new RemoteException(e.getMessage());
- }
+ protected int prepare() throws XAException {
+ forget();
+ return tm.prepare(tx);
}
- private void done() {
- ParticipantService.getInstance().forget(this);
+ protected void commit() throws XAException {
+ tm.commit(tx, false);
}
- public synchronized void prepareOperation(Notification parameters)
- throws RemoteException {
- try {
- bridge.forget(id);
- CoordinatorStub p = new CoordinatorStub(c);
- int status = tx.getStatus();
- switch (status) {
- case Status.STATUS_ACTIVE:
- try {
- if (tm.prepare(tx) ==
XAResource.XA_RDONLY) {
- done();
- p.readOnlyOperation(null);
- } else
- p.preparedOperation(null);
- return;
- } catch (XAException e) {
- done();
- p.abortedOperation(null);
- return;
- }
+ protected void rollback() throws XAException {
+ tm.rollback(tx);
+ }
- case Status.STATUS_COMMITTED:
- case Status.STATUS_COMMITTING:
- p.committedOperation(null);
- return;
+ protected void forget() {
+ if (bridged) {
+ bridge.forget(id);
+ bridged = false;
+ }
+ }
+ protected int getStatus() {
+ try {
+ switch (tm.getStatus()) {
+ case Status.STATUS_ACTIVE:
case Status.STATUS_MARKED_ROLLBACK:
- done();
- p.abortedOperation(null);
- tx.rollback();
- return;
+ return AT2PCStatus.ACTIVE;
+
+ case Status.STATUS_PREPARING:
+ return AT2PCStatus.PREPARING;
- case Status.STATUS_ROLLEDBACK:
case Status.STATUS_ROLLING_BACK:
- done();
- p.abortedOperation(null);
- return;
+ case Status.STATUS_ROLLEDBACK:
+ return AT2PCStatus.ABORTING;
case Status.STATUS_PREPARED:
- p.preparedOperation(null);
- return;
+ return AT2PCStatus.PREPARED;
- case Status.STATUS_PREPARING:
- return;
+ case Status.STATUS_COMMITTING:
+ case Status.STATUS_COMMITTED:
+ return AT2PCStatus.COMMITTING;
case Status.STATUS_NO_TRANSACTION:
+ return AT2PCStatus.NONE;
+
case Status.STATUS_UNKNOWN:
- done();
- p.abortedOperation(null);
- return;
+ default:
+ throw new RuntimeException();
}
- } catch (Exception e) {
+ } catch (SystemException e) {
e.printStackTrace();
- throw new RemoteException(e.getMessage());
- }
- }
-
- public synchronized void rollbackOperation(Notification parameters)
- throws RemoteException {
- bridge.forget(id);
- done();
- try {
- tx.rollback();
- new CoordinatorStub(c).abortedOperation(null);
- } catch (RemoteException e) {
- e.printStackTrace();
- throw e;
- } catch (Exception e) {
- e.printStackTrace();
- throw new RemoteException(e.getMessage());
+ throw new RuntimeException(e);
}
}
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]