i think what you want is a single starting endpoint that branches on the
operation header (or whatever that distinguishes the call).
<camlel:route id="root">
<camel:from uri="cxf:bean...." />
<camel:choice>
<camel:when>
<camel:simple>${header.operationName} == 'op1'</camel:simple>
<camel:to uri="direct:op1route/>
</camel:when>
<camel:when>
<camel:simple>${header.operationName} == 'op2'</camel:simple>
<camel:to uri="direct:op2route/>
</camel:when>
</camel:route>
<camel:route id="op1route">
<camel:from uri="direct:op1route"/>
,,,
<camel:route id="op2route">
<camel:from uri="direct:op2route"/>
,,,
2013/4/22 martin11 <[email protected]>
> Hello,
>
> I`m using camel ver. 2.10.4 and I want to create web service by using CXF
> (contract-first approach) and I have two method (Add & Remove) in single
> WSDL:
>
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <wsdl:definitions name="AdditiveRoleEndpointService"
> xmlns:nps="http://www.test.com/nest/schemas/AdditiveRole
> "
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
> targetNamespace="http://www.test.com/nest/schemas/AdditiveRole">
> <wsdl:types>
> ...
> ...
> </wsdl:types>
> <wsdl:message name="AddRequest">
> <wsdl:part element="nps:AddRequest" name="parameters"/>
> </wsdl:message>
> <wsdl:message name="AddResponse">
> <wsdl:part element="nps:AddResponse" name="parameters"/>
> </wsdl:message>
> <wsdl:message name="RemoveRequest">
> <wsdl:part name="parameters" element="nps:RemoveRequest"/>
> </wsdl:message>
> <wsdl:message name="RemoveResponse">
> <wsdl:part name="parameters" element="nps:RemoveResponse"/>
> </wsdl:message>
> <wsdl:portType name="AdditiveRoleEndpoint">
> <wsdl:operation name="Add">
> <wsdl:input message="nps:AddRequest"/>
> <wsdl:output message="nps:AddResponse"/>
> </wsdl:operation>
> <wsdl:operation name="Remove">
> <wsdl:input message="nps:RemoveRequest"/>
> <wsdl:output message="nps:RemoveResponse"/>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="AdditiveRoleBinding"
> type="nps:AdditiveRoleEndpoint">
> <soap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="Add">
> <soap:operation
> soapAction="http://www.test.com/nest/schemas/AdditiveRole/Add"/>
> <wsdl:input>
> <soap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="Remove">
> <soap:operation
> soapAction="http://www.test.com/nest/schemas/AdditiveRole/Remove"/>
> <wsdl:input>
> <soap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="AdditiveRoleEndpointService">
> <wsdl:port name="AdditiveRoleService"
> binding="nps:AdditiveRoleBinding">
> <soap:address location="http://localhost:9000/additiverole"/>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
>
>
> <cxf:cxfEndpoint id="serviceEndpoint"
> address="http://localhost:9000/role"
>
> serviceClass="com.test.nest.schemas.additiverole.AdditiveRoleEndpoint"
> wsdlURL="service.wsdl"
> endpointName="s:AdditiveRoleService"
> serviceName="s:AdditiveRoleEndpointService"
>
> xmlns:s="http://www.test.com/nest/schemas/AdditiveRole"/>
>
> *Can I use something like SOAP action for specify CXF consumer for each
> method from WSDL?*
>
> <camel:route id="route-add">
> <camel:from uri="cxf:bean:serviceEndpoint?SOAPaction=Add"/>
> <camel:process ref="testingProcessor"/>
> ...
> </camel:route>
> <camel:route id="route-remove">
> <camel:from uri="cxf:bean:serviceEndpoint?SOAPaction=Remove"/>
> <camel:process ref="testingProcessor"/>
> ...
> </camel:route>
>
>
> Thanks for any advice or suggestions,
>
> Martin
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/CXF-consumer-by-soapAction-tp5731241.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>