Author: amilas
Date: Sun Oct 19 21:41:47 2008
New Revision: 706119
URL: http://svn.apache.org/viewvc?rev=706119&view=rev
Log:
fixed the issue SANDESHA2-178
Modified:
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClientConstants.java
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SequenceManager.java
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClientConstants.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClientConstants.java?rev=706119&r1=706118&r2=706119&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClientConstants.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClientConstants.java Sun Oct 19 21:41:47 2008
@@ -39,4 +39,5 @@
public static final String AVOID_AUTO_TERMINATION = "AviodAutoTermination";
public static final String AUTO_START_NEW_SEQUENCE = "AutoStartNewSequence";
public static final String FORBID_MIXED_EPRS_ON_SEQUENCE = "ForbidMixedEPRsOnSequence";//if true means a sequence will not disallow both sync and async clients
+ public static final String ONE_WAY_SEQUENCE = "OneWaySequence"; // if set Sandesha2 will not send any sequene offers
}
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java?rev=706119&r1=706118&r2=706119&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java Sun Oct 19 21:41:47 2008
@@ -34,6 +34,7 @@
import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.Parameter;
import org.apache.axis2.util.MessageContextBuilder;
+import org.apache.axis2.util.JavaUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.sandesha2.RMMsgContext;
@@ -73,12 +74,12 @@
public class RMMsgCreator {
private static Log log = LogFactory.getLog(RMMsgCreator.class);
-
+
public static final String ACK_TO_BE_WRITTEN = "ackToBeWritten";
/**
* Create a new CreateSequence message.
- *
+ *
* @param applicationRMMsg
* @param internalSequenceId
* @param acksToEPR
@@ -87,7 +88,7 @@
*/
public static RMMsgContext createCreateSeqMsg(RMSBean rmsBean, RMMsgContext applicationRMMsg) throws AxisFault {
if(log.isDebugEnabled()) log.debug("Entry: RMMsgCreator::createCreateSeqMsg " + applicationRMMsg);
-
+
MessageContext applicationMsgContext = applicationRMMsg.getMessageContext();
if (applicationMsgContext == null)
throw new SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.appMsgIsNull));
@@ -104,7 +105,7 @@
MessageContext createSeqmsgContext = SandeshaUtil
.createNewRelatedMessageContext(applicationRMMsg, createSequenceOperation);
-
+
OperationContext createSeqOpCtx = createSeqmsgContext.getOperationContext();
String createSeqMsgId = SandeshaUtil.getUUID();
createSeqmsgContext.setMessageID(createSeqMsgId);
@@ -128,26 +129,31 @@
addressingNamespace = AddressingConstants.Final.WSA_NAMESPACE;
}
if(log.isDebugEnabled()) log.debug("RMMsgCreator:: addressing name space is " + addressingNamespace);
-
+
// If acksTo has not been set, then default to anonymous, using the correct spec level
EndpointReference acksToEPR = rmsBean.getAcksToEndpointReference();
if(acksToEPR == null){
acksToEPR = new EndpointReference(SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespace));
}
-
+
CreateSequence createSequencePart = new CreateSequence(rmNamespaceValue);
// Check if this service includes 2-way operations
boolean twoWayService = false;
AxisService service = applicationMsgContext.getAxisService();
- if(service != null) {
- Parameter p = service.getParameter(Sandesha2Constants.SERVICE_CONTAINS_OUT_IN_MEPS);
- if(p != null && p.getValue() != null) {
- twoWayService = ((Boolean) p.getValue()).booleanValue();
- if(log.isDebugEnabled()) log.debug("RMMsgCreator:: twoWayService " + twoWayService);
- }
- }
-
+ if (service != null) {
+ // if the user has specified this sequence as a one way sequence it should not
+ // append the sequence offer.
+ if (!JavaUtils.isTrue(applicationMsgContext.getOptions().getProperty(
+ SandeshaClientConstants.ONE_WAY_SEQUENCE))) {
+ Parameter p = service.getParameter(Sandesha2Constants.SERVICE_CONTAINS_OUT_IN_MEPS);
+ if (p != null && p.getValue() != null) {
+ twoWayService = ((Boolean) p.getValue()).booleanValue();
+ if (log.isDebugEnabled()) log.debug("RMMsgCreator:: twoWayService " + twoWayService);
+ }
+ }
+ }
+
// Adding sequence offer - if present. We send an offer if the client has assigned an
// id, or if we are using WS-RM 1.0 and the service contains out-in MEPs
boolean autoOffer = false;
Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SequenceManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SequenceManager.java?rev=706119&r1=706118&r2=706119&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SequenceManager.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SequenceManager.java Sun Oct 19 21:41:47 2008
@@ -26,6 +26,9 @@
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.ClientUtils;
+import org.apache.axis2.description.WSDL2Constants;
import org.apache.axis2.util.JavaUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -230,7 +233,35 @@
replyToEPR = null;
}
- // For client-side sequences there are 3 options:
+ // if this is an in only service invocation and if the user has set the
+ // use seperate listner option then it should work as an dual channel model.
+ if ((replyToEPR == null) && firstAplicationMsgCtx.getOptions().isUseSeparateListener() &&
+ firstAplicationMsgCtx.getAxisOperation().getMessageExchangePattern().equals(WSDL2Constants.MEP_URI_OUT_ONLY)){
+
+ // first check whether the transport in is set or not
+ TransportInDescription transportIn = firstAplicationMsgCtx.getTransportIn();
+ if (transportIn == null) {
+ transportIn = firstAplicationMsgCtx.getOptions().getTransportIn();
+ }
+
+ //If use seperate listner is false then we have to use the annonymous end point.
+ if ((transportIn == null) && firstAplicationMsgCtx.getOptions().isUseSeparateListener()) {
+ try {
+ transportIn = ClientUtils.inferInTransport(
+ firstAplicationMsgCtx.getConfigurationContext().getAxisConfiguration(),
+ firstAplicationMsgCtx.getOptions(),
+ firstAplicationMsgCtx);
+ replyToEPR = firstAplicationMsgCtx.getConfigurationContext().getListenerManager().getEPRforService(
+ firstAplicationMsgCtx.getAxisService().getName(),
+ firstAplicationMsgCtx.getAxisOperation().getName().getLocalPart(),
+ transportIn.getName());
+ } catch (AxisFault axisFault) {
+ throw new SandeshaException("Can not infer replyToEPR from the first message context ", axisFault);
+ }
+ }
+ }
+
+ // For client-side sequences there are 3 options:
// 1) An explict AcksTo, set via the client API
// 2) The replyTo from the app message
// 3) The anonymous URI (for which we can leave a null EPR)
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.