In Apache Camel, the CXF component is the key to integrating routes with Web services. You can use the CXF component to create two different kinds of endpoint:
Consumer endpoint—(at the start of a route) represents a Web service instance, which integrates with the route. The type of payload injected into the route depends on the value of the endpoint's
dataFormatoption.Producer endpoint—represents a special kind of WS client proxy, which converts the current exchange object into an operation invocation on a remote Web service. The format of the current exchange must match the endpoint's
dataFormatsetting.
The cxf:bean: URI is used to bind an Apache CXF
endpoint to a route and has the following general syntax:
cxf:bean:CxfEndpointID[?Options]
Where is
the ID of a bean created using the CxfEndpointIDcxf:cxfEndpoint
element, which configures the details of the WS endpoint. You
can append options to this URI (where the options are described
in detail in CXF in EIP Component Reference). Provider mode is essentially a
variant of PAYLOAD mode: you could specify this mode on the URI
(by setting dataFormat=PAYLOAD), but this is not
necessary, because PAYLOAD mode is already selected by the
@ServiceMode annotation on the custom
Provider class.
For example, to start a route with an endpoint in provider
mode, where the endpoint is configured by the
customer-ws bean, define the route as
follows:
<route>
<from uri="cxf:bean:customer-ws"/>
...
</route>The cxf:cxfEndpoint element is used to define a
WS endpoint that binds either to the start (consumer endpoint)
or the end (producer endpoint) of a route. For example, to
define the customer-ws WS endpoint in provider
mode, you define a cxf:cxfEndpoint element as
follows:
<?xml version="1.0" encoding="UTF-8"?>
<beans ...>
...
<cxf:cxfEndpoint id="customer-ws"
address="/Customer"
endpointName="c:SOAPOverHTTP"
serviceName="c:CustomerService"
wsdlURL="wsdl/CustomerService.wsdl"
serviceClass="com.fusesource.customerwscamelcxfprovider.SAXSourceService"
xmlns:c="http://demo.fusesource.com/wsdl/CustomerService/"/>
...
</beans>The wsdlURL attribute of the
cxf:cxfEndpoint element is used to specify the
location of the WSDL contract for this endpoint. The WSDL
contract is used as the source of metadata for this
endpoint.








