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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]