Author: rfeng
Date: Sat Jul 21 21:27:27 2007
New Revision: 558461
URL: http://svn.apache.org/viewvc?view=rev&rev=558461
Log:
Apply the 2nd patch from Simon Nash for TUSCANY-1469
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2BindingInvoker.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2OneWayBindingInvoker.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ReferenceBindingProvider.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceClient.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceInMessageReceiver.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceProvider.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AbstractInvocationHandler.java
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivatorImpl.java
incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/resources/simplecallback.composite
incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/resources/wsdl/simplecallback.wsdl
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2BindingInvoker.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2BindingInvoker.java?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2BindingInvoker.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2BindingInvoker.java
Sat Jul 21 21:27:27 2007
@@ -36,6 +36,7 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.tuscany.sca.core.invocation.ThreadMessageContext;
import org.apache.tuscany.sca.interfacedef.ConversationSequence;
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
@@ -78,7 +79,8 @@
return msg;
}
- protected Object invokeTarget(final Object payload, final
ConversationSequence sequence, String conversationId) throws
InvocationTargetException {
+ protected Object invokeTarget(final Object payload, final
ConversationSequence sequence, String conversationId)
+ throws InvocationTargetException {
try {
Object[] args = (Object[]) payload;
@@ -138,6 +140,25 @@
}
operationClient.setOptions(options);
+ if (options.getTo() == null) {
+ org.apache.tuscany.sca.runtime.EndpointReference ep =
ThreadMessageContext.getMessageContext().getTo();
+ if (ep != null) {
+ System.out.println("Axis2BindingInvoker: dynamic endpoint URI
is " + ep.getURI());
+ requestMC.setTo(new EndpointReference(ep.getURI()));
+ } else {
+ throw new RuntimeException("Unable to determine destination
endpoint");
+ }
+ }
+ if (options.getFrom() != null) {
+ requestMC.setFrom(options.getFrom());
+ //FIXME: is there any way to use the Axis2 addressing support for
this?
+ SOAPEnvelope sev = requestMC.getEnvelope();
+ SOAPHeader sh = sev.getHeader();
+ OMElement el =
options.getFrom().toOM(AddressingConstants.Final.WSA_NAMESPACE,
+ AddressingConstants.WSA_FROM,
+
AddressingConstants.WSA_DEFAULT_PREFIX);
+ sh.addChild(el);
+ }
operationClient.addMessageContext(requestMC);
return operationClient;
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2OneWayBindingInvoker.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2OneWayBindingInvoker.java?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2OneWayBindingInvoker.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2OneWayBindingInvoker.java
Sat Jul 21 21:27:27 2007
@@ -27,6 +27,10 @@
import org.apache.axis2.client.OperationClient;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.http.HTTPConstants;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.tuscany.sca.interfacedef.ConversationSequence;
public class Axis2OneWayBindingInvoker extends Axis2BindingInvoker {
@@ -38,11 +42,17 @@
super(serviceClient, wsdlOperationName, options, soapFactory);
}
- protected Object invokeTarget(final Object payload, final short sequence,
String conversationId) throws InvocationTargetException {
+ protected Object invokeTarget(final Object payload, final
ConversationSequence sequence, String conversationId)
+ throws InvocationTargetException {
try {
Object[] args = (Object[]) payload;
OperationClient operationClient = createOperationClient(args,
conversationId);
+
+ // ensure connections are tracked so that they can be closed by
the reference binding
+ MessageContext requestMC =
operationClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+
requestMC.getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT,
Boolean.TRUE);
+
operationClient.execute(false);
// REVIEW it seems ok to return null
@@ -50,8 +60,6 @@
} catch (AxisFault e) {
throw new InvocationTargetException(e);
- } catch (Throwable t) {
- throw new InvocationTargetException(t);
}
}
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ReferenceBindingProvider.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ReferenceBindingProvider.java?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ReferenceBindingProvider.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ReferenceBindingProvider.java
Sat Jul 21 21:27:27 2007
@@ -136,8 +136,14 @@
axisClient = new Axis2ServiceClient(component, reference,
wsBinding, servletHost,
messageFactory,
callbackBinding);
} else {
- axisProvider = new Axis2ServiceProvider(component, reference,
wsBinding, servletHost,
- messageFactory);
+ //FIXME: need to support callbacks through self-references
+ // For now, don't create a callback service provider for a
self-reference
+ // because this modifies the binding URI. This messes up the
service callback
+ // wires because the self-reference has the same binding
object as the service.
+ if (!reference.getName().startsWith("$self$.")) {
+ axisProvider = new Axis2ServiceProvider(component,
reference, wsBinding, servletHost,
+ messageFactory);
+ }
}
}
}
@@ -186,7 +192,10 @@
if (!wsBinding.isCallback()) {
axisClient.start();
} else {
- axisProvider.start();
+ //FIXME: need to support callbacks through self-references
+ if (!reference.getName().startsWith("$self$.")) {
+ axisProvider.start();
+ }
}
}
}
@@ -200,7 +209,10 @@
if (!wsBinding.isCallback()) {
axisClient.stop();
} else {
- axisProvider.stop();
+ //FIXME: need to support callbacks through self-references
+ if (!reference.getName().startsWith("$self$.")) {
+ axisProvider.stop();
+ }
}
}
}
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceClient.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceClient.java?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceClient.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceClient.java
Sat Jul 21 21:27:27 2007
@@ -40,7 +40,6 @@
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.tuscany.sca.assembly.AbstractContract;
import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
-import org.apache.tuscany.sca.core.invocation.ThreadMessageContext;
import org.apache.tuscany.sca.http.ServletHost;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.invocation.Invoker;
@@ -109,18 +108,11 @@
* Create and configure an Axis2BindingInvoker for each operation
*/
protected Invoker createInvoker(Operation operation) {
+ Options options = new Options();
EndpointReference epTo = getPortLocationEPR(wsBinding);
- if (epTo == null) {
- org.apache.tuscany.sca.runtime.EndpointReference epr =
ThreadMessageContext.getMessageContext().getTo();
- if (epr != null) {
- epTo = new EndpointReference(epr.getURI());
- } else {
- throw new RuntimeException("Unable to determine destination
endpoint");
- }
+ if (epTo != null) {
+ options.setTo(epTo);
}
-
- Options options = new Options();
- options.setTo(epTo);
if (callbackBinding != null) {
options.setFrom(getPortLocationEPR(callbackBinding));
}
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceInMessageReceiver.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceInMessageReceiver.java?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceInMessageReceiver.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceInMessageReceiver.java
Sat Jul 21 21:27:27 2007
@@ -63,7 +63,7 @@
} else {
String conversationID = provider.isConversational() ?
Axis2ServiceProvider.getConversationID(inMC) : null;
- String callbackAddress = inMC.getFrom() != null ?
inMC.getFrom().getAddress() : null;
+ String callbackAddress = provider.getFromEPR(inMC);
provider.invokeTarget(operation, args, null, conversationID,
callbackAddress);
}
} catch (InvocationTargetException e) {
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java
Sat Jul 21 21:27:27 2007
@@ -66,7 +66,7 @@
} else {
String conversationID = provider.isConversational() ?
Axis2ServiceProvider.getConversationID(inMC) : null;
- String callbackAddress = inMC.getFrom() != null ?
inMC.getFrom().getAddress() : null;
+ String callbackAddress = provider.getFromEPR(inMC);
responseOM = (OMElement)provider.invokeTarget(operation, args,
null, conversationID,
callbackAddress);
}
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceProvider.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceProvider.java?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceProvider.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/Axis2ServiceProvider.java
Sat Jul 21 21:27:27 2007
@@ -71,7 +71,9 @@
private ConfigurationContext configContext;
// TODO: what to do about the base URI?
- private static final String BASE_URI = "http://localhost:8080/";
+ //FIXME: changed from 8080 to 8085 as hack to work around current
limitation that base URI
+ // must be the same for all servlet mappings in a single Tomcat or Jetty
ServletHost
+ private static final String BASE_URI = "http://localhost:8085/";
public Axis2ServiceProvider(RuntimeComponent component,
AbstractContract contract,
@@ -96,7 +98,7 @@
if (uri.endsWith("/")) {
uri = uri.substring(0, uri.length() - 1);
}
- wsBinding.setURI(uri.toString());
+ wsBinding.setURI(uri);
}
protected void start() {
@@ -114,8 +116,7 @@
servlet.init(configContext);
String servletURI = wsBinding.getURI();
configContext.setContextRoot(servletURI);
- System.out.println("adding servlet mapping for " + servletURI);
- (new RuntimeException()).printStackTrace();
+ System.out.println("Axis2ServiceProvider: adding servlet mapping for "
+ servletURI);
servletHost.addServletMapping(servletURI, servlet);
}
@@ -187,14 +188,14 @@
actualURI = baseURI + "/" + componentURI;
}
- // with multiple services the default binding URI is the binding name
- if (bindingURI == null && component.getServices().size() > 1) {
- // if the binding doesn't have a name use the name of the service
- // (assumption, not in spec)
- if (wsBinding.getName() != null) {
+ // for service bindings with multiple services, the default binding
URI is the binding name
+ // for callback reference bindings, add a prefix "$callback$." to
ensure uniqueness
+ if (bindingURI == null &&
+ (wsBinding.isCallback() || component.getServices().size() > 1)) {
+ if (!wsBinding.isCallback()) {
bindingURI = URI.create(wsBinding.getName());
} else {
- bindingURI = URI.create(contract.getName());
+ bindingURI = URI.create("$callback$." + wsBinding.getName());
}
}
@@ -329,7 +330,7 @@
/**
* @param inMC
- * @return
+ * @return conversationID
*/
protected static String getConversationID(MessageContext inMC) {
String conversationID = null;
@@ -355,6 +356,35 @@
}
return conversationID;
+ }
+
+ //FIXME: is there any way to use the Axis2 addressing support for this?
+ /**
+ * @param inMC
+ * @return fromEPR
+ */
+ protected String getFromEPR(MessageContext inMC) {
+ String fromEPR = null;
+ if (contract instanceof RuntimeComponentService &&
+ contract.getInterfaceContract().getCallbackInterface() != null) {
+ //FIXME: this code can get a NPE if WS-Addressing information is
not present
+ Iterator i =
+ inMC.getEnvelope().getHeader()
+ .getChildrenWithName(new
QName("http://www.w3.org/2005/08/addressing", "From"));
+ for (; i.hasNext();) {
+ Object a = i.next();
+ if (a instanceof OMElement) {
+ OMElement ao = (OMElement)a;
+ for (Iterator adI =
+ ao.getChildrenWithName(new
QName("http://www.w3.org/2005/08/addressing", "Address"));
+ adI.hasNext();) {
+ OMElement adE = (OMElement)adI.next();
+ fromEPR = adE.getText();
+ }
+ }
+ }
+ }
+ return fromEPR;
}
public Object invokeTarget(Operation op,
Modified:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AbstractInvocationHandler.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AbstractInvocationHandler.java?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AbstractInvocationHandler.java
(original)
+++
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/AbstractInvocationHandler.java
Sat Jul 21 21:27:27 2007
@@ -29,6 +29,7 @@
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
import org.apache.tuscany.sca.invocation.MessageFactory;
+import org.apache.tuscany.sca.runtime.EndpointReference;
import org.apache.tuscany.sca.runtime.RuntimeWire;
import org.osoa.sca.Conversation;
@@ -57,6 +58,7 @@
Message msgContext = ThreadMessageContext.getMessageContext();
Object msgContextConversationId = msgContext.getConversationID();
+ EndpointReference epTo = msgContext.getTo();
Message msg = messageFactory.createMessage();
@@ -129,7 +131,11 @@
}
msg.setBody(args);
msg.setFrom(wire.getSource());
- msg.setTo(wire.getTarget());
+ if (epTo != null) {
+ msg.setTo(epTo);
+ } else {
+ msg.setTo(wire.getTarget());
+ }
ThreadMessageContext.setMessageContext(msg);
try {
// dispatch the wire down the chain and get the response
Modified:
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivatorImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivatorImpl.java?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivatorImpl.java
(original)
+++
incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivatorImpl.java
Sat Jul 21 21:27:27 2007
@@ -555,8 +555,13 @@
}
RuntimeWire wire = createServiceWire(service, component, binding,
null, null, binding, isCallback);
- //FIXME: need better way to create the source URI
- wire.getSource().setURI(binding.getURI());
+ //FIXME: need to decide if this is the best way to create the source
URI
+ // The source URI is used by JDKCallbackInvocationHandler to find the
callback wire
+ // corresponding to the forward wire that was used to invoke the
service.
+ // This only works if the source URI is the same for the matched pair
of forward and
+ // callback wires. The binding name seems a reasonable key to use for
this match,
+ // as it allows the user to control which callback binding should be
selected.
+ wire.getSource().setURI(binding.getName());
}
/**
Modified:
incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/resources/simplecallback.composite
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/resources/simplecallback.composite?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/resources/simplecallback.composite
(original)
+++
incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/resources/simplecallback.composite
Sat Jul 21 21:27:27 2007
@@ -28,7 +28,12 @@
callbackInterface="simplecallback.MyServiceCallback" />
<binding.ws
wsdlElement="http://simplecallback#wsdl.port(MyServiceSoapService/MyServiceSoapPort)"
/>
<callback>
+ <!-- comment out the following for tactical==false -->
<binding.ws
wsdlElement="http://simplecallback#wsdl.binding(MyServiceCallbackSoapBinding)"
/>
+ <!-- end of commented out code -->
+ <!-- uncomment the following for tactical==false
+ <binding.ws
wsdlElement="http://simplecallback#wsdl.port(MyServiceCallbackSoapService/MyServiceCallbackSoapPort)"
/>
+ ... end of commented out code -->
</callback>
</reference>
<implementation.java class="simplecallback.MyClientImpl" />
@@ -40,7 +45,12 @@
callbackInterface="http://simplecallback#wsdl.interface(MyServiceCallback)" />
<binding.ws
wsdlElement="http://simplecallback#wsdl.port(MyServiceSoapService/MyServiceSoapPort)"
/>
<callback>
+ <!-- comment out the following for tactical==false -->
<binding.ws
wsdlElement="http://simplecallback#wsdl.binding(MyServiceCallbackSoapBinding)"
/>
+ <!-- end of commented out code -->
+ <!-- uncomment the following for tactical==false
+ <binding.ws
wsdlElement="http://simplecallback#wsdl.port(MyServiceCallbackSoapService/MyServiceCallbackSoapPort)"
/>
+ ... end of commented out code -->
</callback>
</service>
<implementation.java class="simplecallback.MyServiceImpl" />
Modified:
incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/resources/wsdl/simplecallback.wsdl
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/resources/wsdl/simplecallback.wsdl?view=diff&rev=558461&r1=558460&r2=558461
==============================================================================
---
incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/resources/wsdl/simplecallback.wsdl
(original)
+++
incubator/tuscany/java/sca/samples/simple-callback-ws/src/main/resources/wsdl/simplecallback.wsdl
Sat Jul 21 21:27:27 2007
@@ -69,7 +69,9 @@
<wsdl:portType name="MyService">
<wsdl:operation name="someMethod">
<wsdl:input message="tns:someMethodRequest"
name="someMethodRequest"/>
+ <!-- comment out the following for tactical==false -->
<wsdl:output message="tns:someMethodResponse"
name="someMethodResponse"/>
+ <!-- end of commented out code -->
</wsdl:operation>
</wsdl:portType>
@@ -87,9 +89,11 @@
<wsdl:input name="someMethodRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
+ <!-- comment out the following for tactical==false -->
<wsdl:output name="someMethodResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
+ <!-- end of commented out code -->
</wsdl:operation>
</wsdl:binding>
@@ -109,6 +113,13 @@
<wsdl:service name="MyServiceSoapService">
<wsdl:port binding="tns:MyServiceSoapBinding" name="MyServiceSoapPort">
<wsdlsoap:address
location="http://localhost:8085/MyServiceComponent"/>
+ </wsdl:port>
+ </wsdl:service>
+
+ <!--FIXME: remove the need for this fake service in the WSDL -->
+ <wsdl:service name="MyServiceCallbackSoapService">
+ <wsdl:port binding="tns:MyServiceCallbackSoapBinding"
name="MyServiceCallbackSoapPort">
+ <!-- callback address needs to be determined dynamically -->
</wsdl:port>
</wsdl:service>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]