You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ml...@apache.org on 2007/01/15 17:23:41 UTC

svn commit: r496387 - in /webservices/sandesha/trunk/java: config/ src/org/apache/sandesha2/ src/org/apache/sandesha2/handlers/ src/org/apache/sandesha2/i18n/ src/org/apache/sandesha2/policy/ src/org/apache/sandesha2/policy/builders/ src/org/apache/san...

Author: mlovett
Date: Mon Jan 15 08:23:40 2007
New Revision: 496387

URL: http://svn.apache.org/viewvc?view=rev&rev=496387
Log:
Add module.xml properties to control MakeConnection support

Modified:
    webservices/sandesha/trunk/java/config/module.xml
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java

Modified: webservices/sandesha/trunk/java/config/module.xml
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/config/module.xml?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- webservices/sandesha/trunk/java/config/module.xml (original)
+++ webservices/sandesha/trunk/java/config/module.xml Mon Jan 15 08:23:40 2007
@@ -110,6 +110,12 @@
 	      
 	      <!-- This will not be overriden by service level policies -->
 				<sandesha2:SecurityManager>org.apache.sandesha2.security.dummy.DummySecurityManager</sandesha2:SecurityManager>
+				
+				<sandesha2:MakeConnection>
+				  <sandesha2:Enabled>true</sandesha2:Enabled>
+				  <sandesha2:UseRMAnonURI>true</sandesha2:UseRMAnonURI>
+				</sandesha2:MakeConnection>
+				
 			</wsp:Policy>
 		</sandesha2:RMAssertion>
 	</wsp:Policy>

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java Mon Jan 15 08:23:40 2007
@@ -346,6 +346,10 @@
 		String RetransmissionCount = "RetransmissionCount";
 
 		String SecurityManager = "SecurityManager";
+
+		String EnableMakeConnection = "EnableMakeConnection";
+		
+		String EnableRMAnonURI = "EnableRMAnonURI";
 		
 		public interface DefaultValues {
 			
@@ -374,6 +378,10 @@
 			int MaximumRetransmissionCount = 10;
 			
 			String SecurityManager = "org.apache.sandesha2.security.dummy.DummySecurityManager";
+
+			boolean EnableMakeConnection = true;
+			
+			boolean EnableRMAnonURI = true;
 		}
 	}
 	
@@ -463,6 +471,8 @@
 	
 	static final String RETRANSMITTABLE_PHASES = "RMRetransmittablePhases";
 	
+	static final String RM_ANON_UUID = "RMAnonymousUUID";
+	
 	static final String propertiesToCopyFromReferenceMessage = "propertiesToCopyFromReferenceMessage";
 	
 	static final String propertiesToCopyFromReferenceRequestMessage = "propertiesToCopyFromReferenceRequestMessage";
@@ -502,6 +512,9 @@
         public static final String ELEM_SEC_MGR = "SecurityManager";
         public static final String ELEM_INMEMORY_STORAGE_MGR = "InMemoryStorageManager";
         public static final String ELEM_PERMANENT_STORAGE_MGR = "PermanentStorageManager";
+        public static final String ELEM_MAKE_CONNECTION = "MakeConnection";
+        public static final String ELEM_ENABLED = "Enabled";
+        public static final String ELEM_USE_RM_ANON_URI = "UseRMAnonURI";
         
         public static final QName Q_ELEM_POLICY = new QName(URI_POLICY_NS, ELEM_POLICY, ATTR_WSP);
         public static final QName Q_ELEM_RMASSERTION = new QName(URI_RM_POLICY_NS, ELEM_RMASSERTION, ATTR_WSRM);
@@ -518,5 +531,8 @@
         public static final QName Q_ELEM_SEC_MGR = new QName(URI_RM_POLICY_NS, ELEM_SEC_MGR, ATTR_WSRM);
         public static final QName Q_ELEM_INMEMORY_STORAGE_MGR =new QName(URI_RM_POLICY_NS, ELEM_INMEMORY_STORAGE_MGR, ATTR_WSRM);
         public static final QName Q_ELEM_PERMANENT_STORAGE_MGR =new QName(URI_RM_POLICY_NS, ELEM_PERMANENT_STORAGE_MGR, ATTR_WSRM);
+        public static final QName Q_ELEM_MAKE_CONNECTION = new QName(URI_RM_POLICY_NS, ELEM_MAKE_CONNECTION, ATTR_WSRM);
+        public static final QName Q_ELEM_ENABLED = new QName(URI_RM_POLICY_NS, ELEM_ENABLED, ATTR_WSRM);
+        public static final QName Q_ELEM_USE_RM_ANON_URI = new QName(URI_RM_POLICY_NS, ELEM_USE_RM_ANON_URI, ATTR_WSRM);
     }
 }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java Mon Jan 15 08:23:40 2007
@@ -18,9 +18,12 @@
 package org.apache.sandesha2.handlers;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContextFactory;
+import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.handlers.AbstractHandler;
@@ -28,6 +31,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
 import org.apache.sandesha2.client.SandeshaClientConstants;
 import org.apache.sandesha2.i18n.SandeshaMessageHelper;
 import org.apache.sandesha2.i18n.SandeshaMessageKeys;
@@ -35,6 +39,7 @@
 import org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor;
 import org.apache.sandesha2.msgprocessors.MsgProcessor;
 import org.apache.sandesha2.msgprocessors.MsgProcessorFactory;
+import org.apache.sandesha2.policy.SandeshaPolicyBean;
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.Transaction;
 import org.apache.sandesha2.util.MsgInitializer;
@@ -118,6 +123,13 @@
 		try {
 			transaction = storageManager.getTransaction();
 			
+			// Re-write the WS-A anonymous URI, if we support the RM anonymous URI
+			SandeshaPolicyBean policy = SandeshaUtil.getPropertyBean(context.getAxisConfiguration());
+			if(policy.isEnableRMAnonURI()) {
+				EndpointReference replyTo = rewriteEPR(msgCtx.getReplyTo(), msgCtx);
+				msgCtx.setReplyTo(replyTo);
+			}
+			
 			// getting rm message
 			RMMsgContext rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
 
@@ -192,5 +204,44 @@
 
 	public String getName() {
 		return Sandesha2Constants.OUT_HANDLER_NAME;
+	}
+	
+	public EndpointReference rewriteEPR(EndpointReference epr, MessageContext mc)
+	throws SandeshaException
+	{
+		if (log.isDebugEnabled())
+			log.debug("Exit: SandeshaOutHandler::rewriteEPR " + epr);
+
+		// Handle EPRs that have not yet been set. These are effectively WS-A anon, and therefore
+		// we can rewrite them.
+		if(epr == null) epr = new EndpointReference(null);
+		
+		String address = epr.getAddress();
+		if(address == null ||
+		   AddressingConstants.Final.WSA_ANONYMOUS_URL.equals(address) ||
+		   AddressingConstants.Submission.WSA_ANONYMOUS_URL.equals(address)) {
+			// We use the service context to co-ordinate the RM anon uuid, so that several
+			// invocations of the same target will yield stable replyTo addresses.
+			String uuid = null;
+			ServiceContext sc = mc.getServiceContext();
+			if(sc == null) {
+				String msg = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.serviceContextNotSet);
+				throw new SandeshaException(msg);
+			}
+			synchronized (sc) {
+				uuid = (String) sc.getProperty(Sandesha2Constants.RM_ANON_UUID);
+				if(uuid == null) {
+					uuid = SandeshaUtil.getUUID();
+					sc.setProperty(Sandesha2Constants.RM_ANON_UUID, uuid);
+				}
+			}
+			
+			if(log.isDebugEnabled()) log.debug("Rewriting EPR with UUID " + uuid);
+			epr.setAddress(Sandesha2Constants.SPEC_2006_08.ANONYMOUS_URI_PREFIX + uuid);
+		}
+		
+		if (log.isDebugEnabled())
+			log.debug("Exit: SandeshaOutHandler::rewriteEPR " + epr);
+		return epr;
 	}
 }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java Mon Jan 15 08:23:40 2007
@@ -163,6 +163,7 @@
 	public static final String acksToStrNotSet="acksToStrNotSet";
 	public static final String invalidSequenceID="invalidsequenceID";
 	public static final String cantSendMakeConnectionNoTransportOut="cantSendMakeConnectionNoTransportOut";
+	public static final String makeConnectionDisabled="makeConnectionDisabled";
 	
 	public static final String noCreateSeqResponse="noCreateSeqResponse";
 	public static final String noTerminateSeqPart="noTerminateSeqPart";

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties Mon Jan 15 08:23:40 2007
@@ -172,6 +172,7 @@
 acksToStrNotSet=acksToStr Seqeunce property is not set correctly
 invalidSequenceID=invalid sequence ID: {0}
 cantSendMakeConnectionNoTransportOut=Can''t send the MakeConnection reply since the message does not has a TransportOutDescription
+makeConnectionDisabled=Cannot handle synchronous 2-way connections because MakeConnection is not enabled. Either enable MakeConnection or reconfigure your application to use asynchronous connections.
 
 noCreateSeqResponse=''CreateSequenceResponse'' part is not available.
 noTerminateSeqPart=''Terminate Sequence'' part is not available.

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/SandeshaPolicyBean.java Mon Jan 15 08:23:40 2007
@@ -59,6 +59,10 @@
     private boolean exponentialBackoff;
 
     private int maximumRetransmissionCount;
+    
+    private boolean enableMakeConnection;
+    
+    private boolean enableRMAnonURI;
 
     public void setInactiveTimeoutInterval(long value, String measure) {
         long timeOut = -1;
@@ -250,6 +254,22 @@
         writer.writeCharacters(getSecurityManagerClass());
         writer.writeEndElement();
         
+        // <wsrm:MakeConnection>
+        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_MAKE_CONNECTION.getLocalPart(), namespaceURI);
+        
+        // <wsrm:Enabled />
+        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_ENABLED.getLocalPart(), namespaceURI);
+        writer.writeCharacters(Boolean.toString(isEnableMakeConnection()));
+        writer.writeEndElement();
+        
+        // <wsrm:UseRMAnonURI />
+        writer.writeStartElement(prefix, Sandesha2Constants.Assertions.Q_ELEM_USE_RM_ANON_URI.getLocalPart(), namespaceURI);
+        writer.writeCharacters(Boolean.toString(isEnableRMAnonURI()));
+        writer.writeEndElement();
+        
+        // </wsrm:MakeConnection>
+        writer.writeEndElement();
+        
         // </wsp:Policy>
         writer.writeEndElement();
 
@@ -298,7 +318,23 @@
         this.inactivityTimeoutMeasure = inactivityTimeoutMeasure;
     }
 
-    public boolean equal(PolicyComponent policyComponent) {
+    public boolean isEnableMakeConnection() {
+		return enableMakeConnection;
+	}
+
+	public void setEnableMakeConnection(boolean enableMakeConnection) {
+		this.enableMakeConnection = enableMakeConnection;
+	}
+
+	public boolean isEnableRMAnonURI() {
+		return enableRMAnonURI;
+	}
+
+	public void setEnableRMAnonURI(boolean enableRMAnonURI) {
+		this.enableRMAnonURI = enableRMAnonURI;
+	}
+
+	public boolean equal(PolicyComponent policyComponent) {
         // TODO
         return false;
     }    

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/policy/builders/RMAssertionBuilder.java Mon Jan 15 08:23:40 2007
@@ -132,6 +132,22 @@
                 	}
                 	
                 }
+            } else if(Sandesha2Constants.Assertions.ELEM_MAKE_CONNECTION.equals(name)) {
+                if (element!=null) {
+                	// Read the nested assertions
+                	
+                	OMElement enabledElem = element.getFirstChildWithName(Sandesha2Constants.Assertions.Q_ELEM_ENABLED);
+                	if (enabledElem!=null) {
+                		String data = enabledElem.getText().trim();
+                		propertyBean.setEnableMakeConnection(Boolean.parseBoolean(data));
+                	}
+                	
+                	OMElement useRMAnonElem = element.getFirstChildWithName(Sandesha2Constants.Assertions.Q_ELEM_USE_RM_ANON_URI);
+                	if (useRMAnonElem!=null) {
+                		String data = useRMAnonElem.getText().trim();
+                		propertyBean.setEnableRMAnonURI(Boolean.parseBoolean(data));
+                	}
+                }
             }
         }
     }

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/PropertyManager.java Mon Jan 15 08:23:40 2007
@@ -64,6 +64,9 @@
 
 		propertyBean.setSecurityManagerClass(Sandesha2Constants.Properties.DefaultValues.SecurityManager);
 		
+		propertyBean.setEnableMakeConnection(Sandesha2Constants.Properties.DefaultValues.EnableMakeConnection);
+		propertyBean.setEnableRMAnonURI(Sandesha2Constants.Properties.DefaultValues.EnableRMAnonURI);
+		
 		return propertyBean;
 	}
 

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=496387&r1=496386&r2=496387
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java Mon Jan 15 08:23:40 2007
@@ -220,6 +220,13 @@
 	}
 
 	public static void startPollingManager (ConfigurationContext configurationContext) throws SandeshaException {
+		// Only start the polling manager if we are configured to use MakeConnection
+		SandeshaPolicyBean policy = getPropertyBean(configurationContext.getAxisConfiguration());
+		if(!policy.isEnableMakeConnection()) {
+			String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.makeConnectionDisabled);
+			throw new SandeshaException(message);
+		}
+		
 		PollingManager pollingManager = (PollingManager) configurationContext.getProperty(
 				Sandesha2Constants.POLLING_MANAGER);
 		



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org