SwitchYard doesn't accept a WSDL interface having multiple message part to input and output of the wsdl operation
Issue
SwitchYardthrows the following ERROR , when theWSDLused in theSwitchYardservice'swsdl interfacecontains multiplemessage parttoinputandoutputof thewsdl operation.
SWITCHYARD012801: Service operations on a WSDL interface must have exactly one parameter
- The sample
switchyard.xmlconfiguration and a sampleWSDLis shown below for reference. How to fix this issue?
switchyard.xml
...
<sca:component name="Sample-Camel-Route">
<camel:implementation.camel>
<camel:xml path="META-INF/sample-camel-route.xml"></camel:xml>
</camel:implementation.camel>
<sca:service name="SampleServiceProxy">
<sca:interface.wsdl interface="META-INF/Sample_proxy.wsdl#wsdl.porttype(SampleService)"></sca:interface>
</sca:service>
<sca:reference name="SampleService">
<sca:interface.wsdl interface="META-INF/Sample_1.wsdl#wsdl.porttype(SampleService)"></sca:interface>
</sca:reference>
</sca:component>
<sca:service name="SampleServiceProxy" promote="Sample-Camel-Route/SampleServiceProxy">
<sca:interface.wsdl interface="META-INF/Sample_proxy.wsdl#wsdl.porttype(SampleService)"></sca:interface>
<soap:binding.soap>
<soap:wsdl>META-INF/Sample_proxy1.wsdl</soap:wsdl>
<soap:wsdlPort>SampleServiceImplPort</soap:wsdlPort>
<soap:socketAddr>:8080</soap:socketAddr>
<soap:contextPath>SampleProxy</soap:contextPath>
</soap:binding.soap>
</sca:service>
...
- Looking at the following
WSDLit is visible how it contains the additional header which causes the aforementioned issue.
Sample_proxy.wsdl
...
<wsdl:operation name="SampleData">
<soap:operation soapAction="" style="document" ></soap:operation>
<wsdl:input name="saveData">
<soap:body parts="parameters" use="literal" ></soap:body>
<soap:header message="tns:saveData" part="partCode" use="literal">
</soap:header>
<soap:header message="tns:saveData" part="secondPartCode" use="literal">
</soap:header>
<soap:header message="tns:saveData" part="thirdPartCode" use="literal">
</soap:header>
</wsdl:input>
<wsdl:output name="saveDataResponse">
<soap:header message="tns:saveDataResponse"
part="partCode" use="literal">
</soap:header>
<soap:header message="tns:saveDataResponse"
part="secondPartCode" use="literal">
</soap:header>
<soap:header message="tns:saveDataResponse"
part="thirdPartCode" use="literal">
</soap:header>
<soap:body parts="result" use="literal" ></soap:body>
</wsdl:output>
</wsdl:operation>
...
- On the other hand the other
WSDLdoes not contain the additional headers which works fine.
Sample_proxy1.wsdl
...
<wsdl:operation name="saveData">
<soap:operation soapAction="" style="document" />
<wsdl:input name="saveData">
<soap:body parts="parameters" use="literal" />
</wsdl:input>
<wsdl:output name="saveDataResponse">
<soap:body parts="result" use="literal" />
</wsdl:output>
</wsdl:operation>
...
Environment
- Red Hat JBoss Fuse Service Works (FSW)
- 6.0.0
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
