SwitchYard doesn't accept a WSDL interface having multiple message part to input and output of the wsdl operation
Issue
SwitchYard
throws the following ERROR , when theWSDL
used in theSwitchYard
service'swsdl interface
contains multiplemessage part
toinput
andoutput
of thewsdl operation
.
SWITCHYARD012801: Service operations on a WSDL interface must have exactly one parameter
- The sample
switchyard.xml
configuration and a sampleWSDL
is 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
WSDL
it 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
WSDL
does 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, tools, and much more.