You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsif-dev@ws.apache.org by wh...@apache.org on 2003/04/15 12:00:30 UTC
cvs commit: xml-axis-wsif/java/src/org/apache/wsif/providers WSIFTransactionControl.java
whitlock 2003/04/15 03:00:30
Modified: java/src/org/apache/wsif/providers/jms Tag: pre1_2_0-patches
WSIFOperation_Jms.java
java/src Tag: pre1_2_0-patches wsif.properties
Added: java/test Tag: pre1_2_0-patches wsif.properties
java/test/transaction Tag: pre1_2_0-patches
WSIFTransactionControlDummyImpl.java
TransactionControlTest.java
java/src/org/apache/wsif/providers Tag: pre1_2_0-patches
WSIFTransactionControl.java
Log:
19024: Enable suspend/resume transaction around JMS put
Revision Changes Path
No revision
No revision
1.1.2.1 +3 -0 xml-axis-wsif/java/test/Attic/wsif.properties
No revision
No revision
1.34.2.3 +47 -4 xml-axis-wsif/java/src/org/apache/wsif/providers/jms/WSIFOperation_Jms.java
Index: WSIFOperation_Jms.java
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/providers/jms/WSIFOperation_Jms.java,v
retrieving revision 1.34.2.2
retrieving revision 1.34.2.3
diff -u -r1.34.2.2 -r1.34.2.3
--- WSIFOperation_Jms.java 18 Mar 2003 17:57:23 -0000 1.34.2.2
+++ WSIFOperation_Jms.java 15 Apr 2003 10:00:28 -0000 1.34.2.3
@@ -57,6 +57,8 @@
package org.apache.wsif.providers.jms;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -89,6 +91,7 @@
import org.apache.wsif.base.WSIFDefaultOperation;
import org.apache.wsif.logging.MessageLogger;
import org.apache.wsif.logging.Trc;
+import org.apache.wsif.providers.WSIFTransactionControl;
import org.apache.wsif.util.WSIFCorrelationServiceLocator;
import org.apache.wsif.util.WSIFProperties;
import org.apache.wsif.util.WSIFUtils;
@@ -143,7 +146,8 @@
private long syncTimeout;
private long asyncTimeout;
-
+ transient private WSIFTransactionControl transControl;
+
/**
* ctor
*/
@@ -162,6 +166,35 @@
syncTimeout = WSIFProperties.getSyncTimeout();
asyncTimeout = WSIFProperties.getAsyncTimeout();
+ final String name =
+ WSIFProperties.getProperty("wsif.transactioncontrol.impl");
+
+ if (name != null) {
+ Class clazz = (Class) AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run() {
+ try {
+ return Class.forName(
+ name,
+ true,
+ Thread.currentThread().getContextClassLoader());
+ } catch (Throwable ignored) {
+ Trc.ignoredException(ignored);
+ }
+ return null;
+ }
+ });
+
+ if (clazz != null) {
+ try {
+ transControl = (WSIFTransactionControl) clazz.newInstance();
+ } catch (Exception ignored) {
+ Trc.ignoredException(ignored);
+ transControl = null;
+ }
+ } else
+ transControl = null;
+ }
+
if (Trc.ON)
Trc.exit(deep());
}
@@ -203,13 +236,20 @@
setAsyncOperation(false);
boolean operationSucceeded = true;
+ boolean txnSuspended = false;
try {
- getOperation();
+ getOperation();
+
+ if (transControl != null) {
+ transControl.suspend();
+ txnSuspended = true;
+ }
// send the jms message
String correlId = sendJmsMessage(input);
WSIFJMSDestination jmsDest = fieldJmsPort.getJmsDestination();
+
javax.jms.Message response = jmsDest.receive(correlId, syncTimeout);
operationSucceeded = receiveJmsMessage(response, output, fault);
@@ -228,7 +268,10 @@
+ fieldBindingOperation.getName()
+ "'",
ex);
- }
+ } finally {
+ if (txnSuspended)
+ transControl.resume();
+ }
Trc.exit(operationSucceeded);
return operationSucceeded;
@@ -1099,7 +1142,7 @@
return bop;
}
-
+
public String deep() {
String buff = "";
try {
No revision
No revision
1.1.2.1 +94 -0 xml-axis-wsif/java/test/transaction/Attic/WSIFTransactionControlDummyImpl.java
1.1.2.1 +140 -0 xml-axis-wsif/java/test/transaction/Attic/TransactionControlTest.java
No revision
No revision
1.2.2.1 +5 -1 xml-axis-wsif/java/src/wsif.properties
Index: wsif.properties
===================================================================
RCS file: /home/cvs/xml-axis-wsif/java/src/wsif.properties,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -u -r1.2 -r1.2.2.1
--- wsif.properties 19 Jul 2002 15:04:14 -0000 1.2
+++ wsif.properties 15 Apr 2003 10:00:30 -0000 1.2.2.1
@@ -25,4 +25,8 @@
# maximum number of seconds to wait for a response to an async request.
# if not defined on invalid defaults to no timeout
-wsif.asyncrequest.timeout=60
\ No newline at end of file
+wsif.asyncrequest.timeout=60
+
+# The class name of an implementation of WSIFTransactionControl that will suspend
+# and resume a global transaction around a JMS put (for instance).
+#wsif.transactioncontrol.impl=""
\ No newline at end of file
No revision
No revision
1.1.2.1 +79 -0 xml-axis-wsif/java/src/org/apache/wsif/providers/Attic/WSIFTransactionControl.java