You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ja...@apache.org on 2005/03/04 11:52:19 UTC
cvs commit: ws-fx/sandesha/src .project
jaliya 2005/03/04 02:52:19
Modified: sandesha/config server-config.wsdd
sandesha/src/org/apache/sandesha Constants.java
sandesha/src/org/apache/sandesha/server Sender.java
sandesha/src/org/apache/sandesha/ws/rm/handlers
RMServerRequestHandler.java
sandesha/src/org/apache/sandesha/ws/rm/providers
RMProvider.java
Removed: sandesha/src .project
Log:
Now the RMProvider can be configured to ignore wsa:actions, so if the user needs some actions not be considered by RM then they can add a list of actions to the server-config.wsdd as service properties
Revision Changes Path
1.3 +5 -1 ws-fx/sandesha/config/server-config.wsdd
Index: server-config.wsdd
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/config/server-config.wsdd,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- server-config.wsdd 2 Mar 2005 03:16:30 -0000 1.2
+++ server-config.wsdd 4 Mar 2005 10:52:19 -0000 1.3
@@ -30,6 +30,7 @@
<parameter name="allowedMethods" value="getVersion"/>
<parameter name="className" value="org.apache.axis.Version"/>
</service>
+
<service name="RMInteropService" provider="Handler">
<requestFlow>
<handler type="java:org.apache.sandesha.ws.rm.handlers.RMServerRequestHandler"/>
@@ -39,7 +40,10 @@
<parameter name="scope" value="request"/>
<parameter name="className" value="org.apache.sandesha.samples.interop.RMInteropService"/>
<parameter name="handlerClass" value="org.apache.sandesha.ws.rm.providers.RMProvider"/>
- </service>
+ <parameter name="ignoreAction1" value="http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT"/>
+ </service>
+
+
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
1.33 +3 -0 ws-fx/sandesha/src/org/apache/sandesha/Constants.java
Index: Constants.java
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/Constants.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- Constants.java 28 Feb 2005 13:25:53 -0000 1.32
+++ Constants.java 4 Mar 2005 10:52:19 -0000 1.33
@@ -167,6 +167,9 @@
*/
public static final String RM_SEQUENCE_ACKNOWLEDMENT_ACTION = "http://schemas.xmlsoap.org/ws/2004/03/rm/SequenceAcknowledgement";
+ public static final String IGNORE_ACTION="ignoreAction";
+
+
public int SERVER_QUEUE_ACCESSOR = 1;
public int SERVER_DATABASE_ACCESSOR = 2;
1.29 +21 -1 ws-fx/sandesha/src/org/apache/sandesha/server/Sender.java
Index: Sender.java
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/Sender.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- Sender.java 4 Mar 2005 07:56:56 -0000 1.28
+++ Sender.java 4 Mar 2005 10:52:19 -0000 1.29
@@ -48,6 +48,26 @@
public boolean running = true;
private IStorageManager storageManager;
+ private static SimpleChain requestChain=null;
+
+ public static SimpleChain getRequestChain() {
+ return requestChain;
+ }
+
+ public static void setRequestChain(SimpleChain requestChain) {
+ Sender.requestChain = requestChain;
+ }
+
+ public static SimpleChain getResponseChanin() {
+ return responseChanin;
+ }
+
+ public static void setResponseChanin(SimpleChain responseChanin) {
+ Sender.responseChanin = responseChanin;
+ }
+
+ private static SimpleChain responseChanin=null;
+
public Sender() {
storageManager = new ServerStorageManager();
}
@@ -206,7 +226,7 @@
// sc.addHandler(addressingHandler);
//sc.addHandler(serverRequestHandler);
- //call.setClientHandlers(null, sc);
+ call.setClientHandlers(requestChain,responseChanin);
if (rmMessageContext.getMsgContext().getRequestMessage() != null) {
String soapMsg = rmMessageContext.getMsgContext().getRequestMessage().getSOAPPartAsString();
1.16 +1 -1 ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers/RMServerRequestHandler.java
Index: RMServerRequestHandler.java
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/handlers/RMServerRequestHandler.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- RMServerRequestHandler.java 4 Mar 2005 07:56:57 -0000 1.15
+++ RMServerRequestHandler.java 4 Mar 2005 10:52:19 -0000 1.16
@@ -48,7 +48,7 @@
try {
RMHeaders rmHeaders = new RMHeaders();
rmHeaders.fromSOAPEnvelope(msgContext.getRequestMessage().getSOAPEnvelope());
-
+
} catch (SOAPException e) {
throw AxisFault.makeFault(e);
} catch (Exception e) {
1.38 +89 -45 ws-fx/sandesha/src/org/apache/sandesha/ws/rm/providers/RMProvider.java
Index: RMProvider.java
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/providers/RMProvider.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- RMProvider.java 28 Feb 2005 13:26:09 -0000 1.37
+++ RMProvider.java 4 Mar 2005 10:52:19 -0000 1.38
@@ -19,10 +19,12 @@
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.components.logger.LogFactory;
+import org.apache.axis.handlers.soap.SOAPService;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.message.addressing.AddressingHeaders;
import org.apache.axis.providers.java.RPCProvider;
import org.apache.commons.logging.Log;
+import org.apache.sandesha.Constants;
import org.apache.sandesha.IStorageManager;
import org.apache.sandesha.RMInitiator;
import org.apache.sandesha.RMMessageContext;
@@ -33,6 +35,11 @@
import org.apache.sandesha.storage.dao.SandeshaQueueDAO;
import org.apache.sandesha.ws.rm.RMHeaders;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+
/**
* class RMProvider
*
@@ -51,61 +58,67 @@
throws Exception {
RMProvider.log.info("RMProvider Received a SOAP REQUEST");
-
-
- IStorageManager storageManager = RMInitiator.init(client);
- storageManager.init();
-
- RMMessageContext rmMessageContext = new RMMessageContext();
- rmMessageContext.setMsgContext(msgContext);
- try {
- MessageValidator.validate(rmMessageContext, client);
- } catch (AxisFault af) {
- FaultProcessor faultProcessor = new FaultProcessor(storageManager, af);
-
- if (!faultProcessor.processMessage(rmMessageContext)) {
- msgContext.setResponseMessage(null);
+ //Some actions may need to be ignored. e.g. http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
+ //user can specify them in the server-config.wsdd as parameters to the service
+ //parameter names should be in ignoreAction1, ignoreAction2 format.
+
+ if (isIgnorableMessage(msgContext)) {
+ RPCProvider rpcProvider = new RPCProvider();
+ rpcProvider.invoke(msgContext);
+
+ } else {
+
+ IStorageManager storageManager = RMInitiator.init(client);
+ storageManager.init();
+
+ RMMessageContext rmMessageContext = new RMMessageContext();
+ rmMessageContext.setMsgContext(msgContext);
+ try {
+ MessageValidator.validate(rmMessageContext, client);
+ } catch (AxisFault af) {
+ FaultProcessor faultProcessor = new FaultProcessor(storageManager, af);
+
+ if (!faultProcessor.processMessage(rmMessageContext)) {
+ msgContext.setResponseMessage(null);
+ return;
+ }
return;
}
- return;
- }
- RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
- AddressingHeaders addrHeaders = rmMessageContext.getAddressingHeaders();
+ RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
+ AddressingHeaders addrHeaders = rmMessageContext.getAddressingHeaders();
- if (null != rmHeaders.getSequence()) {
- rmMessageContext.setSequenceID(rmHeaders.getSequence().getIdentifier().toString());
- if (null != rmHeaders.getSequence().getLastMessage()) {
- rmMessageContext.setLastMessage(true);
+ if (null != rmHeaders.getSequence()) {
+ rmMessageContext.setSequenceID(rmHeaders.getSequence().getIdentifier().toString());
+ if (null != rmHeaders.getSequence().getLastMessage()) {
+ rmMessageContext.setLastMessage(true);
+ }
}
- }
-
- rmMessageContext.setMessageID(addrHeaders.getMessageID().toString());
- IRMMessageProcessor rmMessageProcessor = RMMessageProcessorIdentifier.getMessageProcessor(rmMessageContext, storageManager);
- try {
- if (!rmMessageProcessor.processMessage(rmMessageContext)) {
- msgContext.setResponseMessage(null);
- } else {
- // TODO Get the from envecreator
-
- // SOAPEnvelope resEn=EnvelopeCreator.createAcknowledgementEnvelope()
- }
- } catch (AxisFault af) {
- RMProvider.log.error(af);
+ rmMessageContext.setMessageID(addrHeaders.getMessageID().toString());
+ IRMMessageProcessor rmMessageProcessor = RMMessageProcessorIdentifier.getMessageProcessor(rmMessageContext, storageManager);
- FaultProcessor faultProcessor = new FaultProcessor(storageManager, af);
-
- if (!faultProcessor.processMessage(rmMessageContext)) {
- msgContext.setResponseMessage(null);
+ try {
+ if (!rmMessageProcessor.processMessage(rmMessageContext)) {
+ msgContext.setResponseMessage(null);
+ } else {
+ // TODO Get the from envecreator
+
+ // SOAPEnvelope resEn=EnvelopeCreator.createAcknowledgementEnvelope()
+ }
+ } catch (AxisFault af) {
+ RMProvider.log.error(af);
+
+ FaultProcessor faultProcessor = new FaultProcessor(storageManager, af);
+
+ if (!faultProcessor.processMessage(rmMessageContext)) {
+ msgContext.setResponseMessage(null);
+ return;
+ }
return;
}
- return;
+
}
-
-// SandeshaQueue sq = SandeshaQueue.getInstance();
-// sq.displayIncomingMap();
-// sq.displayOutgoingMap();
}
//This is used by the Client to set the
@@ -114,4 +127,35 @@
this.client = client;
}
+ private boolean isIgnorableMessage(MessageContext msgContext) throws Exception {
+ boolean result = false;
+ AddressingHeaders addrH = new AddressingHeaders(msgContext.getRequestMessage().getSOAPEnvelope());
+ List lst = getIgnorableActions(msgContext);
+ if (lst != null && addrH.getAction() != null) {
+ Iterator ite = lst.iterator();
+ while (ite.hasNext()) {
+ String str = (String) ite.next();
+ if (str.equals(addrH.getAction().toString()))
+ result = true;
+ }
+ }
+
+ return result;
+ }
+
+ private List getIgnorableActions(MessageContext msgContext) {
+ SOAPService soapService = msgContext.getService();
+ Hashtable options = soapService.getOptions();
+ Iterator ite = options.keySet().iterator();
+ List actionList = new ArrayList();
+ while (ite.hasNext()) {
+ String key = (String) ite.next();
+
+ if (key.regionMatches(0,Constants.IGNORE_ACTION,0,Constants.IGNORE_ACTION.length()))
+ actionList.add(options.get(key));
+ }
+
+ return actionList;
+ }
+
}
\ No newline at end of file