In Apache Camel, the Camel CXF component is the key to integrating routes with Web services. You can use the Camel CXF component to create two different kinds of Apache Camel 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
Options in 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="http://0.0.0.0:9191/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.
A key difference between provider mode and ordinary PAYLOAD mode is that the
serviceClass attribute must be set to the provider class,
SAXSourceService.
Because of the modular structure of Apache CXF, additional configuration is added as needed
using the relevant <import ...> tags in XML. In the most recent version of
Apache CXF (later than 2.4.3), only the META-INF/cxf/cxf.xml resource is
needed.
For more details, see Importing XML resources.








