Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Name

Required

Description

wsdlURL

No

The location of the WSDL. It is obtained from endpoint address by default.

Example: file://local/wsdl/hello.wsdl or wsdl/hello.wsdl

serviceClass

Yes

The name of the SEI (Service Endpoint Interface) class. This class can have, but does not require, JSR181 annotations.
This option is only required by POJO mode. If the wsdlURL option is provided, serviceClass is not required for PAYLOAD and MESSAGE mode. When wsdlURL option is used without serviceClass, the serviceName and portName (endpointName for Spring configuration) options MUST be provided. It is possible to use # notation to reference a serviceClass object instance from the registry. E.g. serviceClass=#beanName. The serviceClass for a CXF producer (that is, the to endpoint) should be a Java interface.
Since 2.8, it is possible to omit both wsdlURL and serviceClass options for PAYLOAD and MESSAGE mode. When they are omitted, arbitrary XML elements can be put in CxfPayload's body in PAYLOAD mode to facilitate CXF Dispatch Mode.

Please be advised that the referenced object cannot be a Proxy (Spring AOP Proxy is OK) as it relies on Object.getClass().getName() method for non Spring AOP Proxy.

Example: org.apache.camel.Hello

serviceName

No

The service name this service is implementing, it maps to the wsdl:service@name.

Required for camel-cxf consumer since camel-2.2.0 or if more than one serviceName is present in WSDL.

Example: {http:­//org.apache.camel}ServiceName

portName endpointName

No

The port name this service is implementing, it maps to the wsdl:port@name.

Required for camel-cxf consumer since camel-2.2.0 or if more than one portName is present under serviceName.

Example: {http:­//org.apache.camel}PortName

dataFormat

No

The data type messages supported by the CXF endpoint.

Default: POJO
Example: POJO, PAYLOAD, MESSAGE

relayHeaders

No

Please see the Description of relayHeaders option section for this option. Should a CXF endpoint relay headers along the route. Currently only available when dataFormat=POJO

Default: true
Example: true, false

wrapped

No

Which kind of operation that CXF endpoint producer will invoke

Default: false
Example: true, false

wrappedStyle

No

New in 2.5.0 The WSDL style that describes how parameters are represented in the SOAP body. If the value is false, CXF will chose the document-literal unwrapped style, If the value is true, CXF will chose the document-literal wrapped style

Default: Null
Example: true, false

setDefaultBus

No

Will set the default bus when CXF endpoint create a bus by itself

Default: false
Example: true, false

bus

No

A default bus created by CXF Bus Factory. Use # notation to reference a bus object from the registry. The referenced object must be an instance of org.apache.cxf.Bus.

Example: bus=#busName

cxfBinding

No

Use # notation to reference a CXF binding object from the registry. The referenced object must be an instance of org.apache.camel.component.cxf.CxfBinding (use an instance of org.apache.camel.component.cxf.DefaultCxfBinding).

Example: cxfBinding=#bindingName

headerFilterStrategy

No

Use # notation to reference a header filter strategy object from the registry. The referenced object must be an instance of org.apache.camel.spi.HeaderFilterStrategy (use an instance of org.apache.camel.component.cxf.CxfHeaderFilterStrategy).

Example: headerFilterStrategy=#strategyName

loggingFeatureEnabled

No

New in 2.3. This option enables CXF Logging Feature which writes inbound and outbound SOAP messages to log.

Default: false
Example: loggingFeatureEnabled=true

defaultOperationName

No

New in 2.4, this option will set the default operationName that will be used by the CxfProducer which invokes the remote service.

Default: null
Example: defaultOperationName=greetMe

defaultOperationNamespace

No

New in 2.4. This option will set the default operationNamespace that will be used by the CxfProducer which invokes the remote service.

Default: null
Example: defaultOperationNamespace=http://apache.org/hello_world_soap_http

synchronous

No

New in 2.5. This option will let cxf endpoint decide to use sync or async API to do the underlying work. The default value is false which means camel-cxf endpoint will try to use async API by default.

Default: false
Example: synchronous=true

publishedEndpointUrl

No

New in 2.5. This option can override the endpointUrl that published from the WSDL which can be accessed with service address url plus ?wsdl.

Default: null
Example: publshedEndpointUrl=http://example.com/service

properties.XXX

No

Camel 2.8: Allows to set custom properties to CXF in the endpoint uri. For example setting properties.mtom-enabled=true to enable MTOM.

allowStreaming

No

New in 2.8.2. This option controls whether the CXF component, when running in PAYLOAD mode (see below), will DOM parse the incoming messages into DOM Elements or keep the payload as a javax.xml.transform.Source object that would allow streaming in some cases.

skipFaultLogging

No

New in 2.11. This option controls whether the PhaseInterceptorChain skips logging the Fault that it catches.

username

No

New in Camel 2.12.3 This option is used to set the basic authentication information of username for the CXF client.

password

No

New in Camel 2.12.3 This option is used to set the basic authentication information of password for the CXF client.

...

  • POJO and PAYLOAD modes are supported. In POJO mode, only out-of-band message headers are available for filtering as the in-band headers have been processed and removed from header list by CXF. The in-band headers are incorporated into the MessageContentList in POJO mode. The camel-cxf component does make any attempt to remove the in-band headers from the MessageContentList. If filtering of in-band headers is required, please use PAYLOAD mode or plug in a (pretty straightforward) CXF interceptor/JAXWS Handler to the CXF endpoint.
  • The Message Header Relay mechanism has been merged into CxfHeaderFilterStrategy. The relayHeaders option, its semantics, and default value remain the same, but it is a property of CxfHeaderFilterStrategy.
    Here is an example of configuring it.

    Wiki Markup
    {snippet:id=dropAllMessageHeadersStrategy|lang=xml|url=camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest-context.xml}

    Then, your endpoint can reference the CxfHeaderFilterStrategy.

    Wiki Markup
    {snippet:id=noRelayRoute|lang=xml|url=camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest-context.xml}
  • The MessageHeadersRelay interface has changed slightly and has been renamed to MessageHeaderFilter. It is a property of CxfHeaderFilterStrategy. Here is an example of configuring user defined Message Header Filters:

    Wiki Markup
    {snippet:id=customMessageFilterStrategy|lang=xml|url=camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest-context.xml}
  • Other than relayHeaders, there are new properties that can be configured in CxfHeaderFilterStrategy.

    Name

    Required

    Description

    relayHeaders

    No

    All message headers will be processed by Message Header Filters

    Type: boolean
    Default: true

    relayAllMessageHeaders

    No

    All message headers will be propagated (without processing by Message Header Filters)

    Type: boolean
    Default: false

    allowFilterNamespaceClash

    No

    If two filters overlap in activation namespace, the property control how it should be handled. If the value is true, last one wins. If the value is false, it will throw an exception

    Type: boolean
    Default: false

    Configure the CXF endpoints with Spring

    You can configure the CXF endpoint with the Spring configuration file shown below, and you can also embed the endpoint into the camelContext tags. When you are invoking the service endpoint, you can set the operationName and operationNamespace headers to explicitly state which operation you are calling.

    Code Block
    xml
    xml
    
    <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:cxf="http://camel.apache.org/schema/cxf"
            xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
            http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
         <cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:9003/CamelContext/RouterPort"
         		serviceClass="org.apache.hello_world_soap_http.GreeterImpl"/>
         <cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:9000/SoapContext/SoapPort"
         		wsdlURL="testutils/hello_world.wsdl"
         		serviceClass="org.apache.hello_world_soap_http.Greeter"
         		endpointName="s:SoapPort"
         		serviceName="s:SOAPService"
         	xmlns:s="http://apache.org/hello_world_soap_http" />
         <camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
           <route>
             <from uri="cxf:bean:routerEndpoint" />
             <to uri="cxf:bean:serviceEndpoint" />
           </route>
        </camelContext>
      </beans>
    

    Be sure to include the JAX-WS schemaLocation attribute specified on the root beans element. This allows CXF to validate the file and is required. Also note the namespace declarations at the end of the <cxf:cxfEndpoint/> tag--these are required because the combined {namespace}localName syntax is presently not supported for this tag's attribute values.

    The cxf:cxfEndpoint element supports many additional attributes:

    Name

    Value

    PortName

    The endpoint name this service is implementing, it maps to the wsdl:port@name. In the format of ns:PORT_NAME where ns is a namespace prefix valid at this scope.

    serviceName

    The service name this service is implementing, it maps to the wsdl:service@name. In the format of ns:SERVICE_NAME where ns is a namespace prefix valid at this scope.

    wsdlURL

    The location of the WSDL. Can be on the classpath, file system, or be hosted remotely.

    bindingId

    The bindingId for the service model to use.

    address

    The service publish address.

    bus

    The bus name that will be used in the JAX-WS endpoint.

    serviceClass

    The class name of the SEI (Service Endpoint Interface) class which could have JSR181 annotation or not.

    It also supports many child elements:

    Name

    Value

    cxf:inInterceptors

    The incoming interceptors for this endpoint. A list of <bean> or <ref>.

    cxf:inFaultInterceptors

    The incoming fault interceptors for this endpoint. A list of <bean> or <ref>.

    cxf:outInterceptors

    The outgoing interceptors for this endpoint. A list of <bean> or <ref>.

    cxf:outFaultInterceptors

    The outgoing fault interceptors for this endpoint. A list of <bean> or <ref>.

    cxf:properties

    A properties map which should be supplied to the JAX-WS endpoint. See below.

    cxf:handlers

    A JAX-WS handler list which should be supplied to the JAX-WS endpoint. See below.

    cxf:dataBinding

    You can specify the which DataBinding will be use in the endpoint. This can be supplied using the Spring <bean class="MyDataBinding"/> syntax.

    cxf:binding

    You can specify the BindingFactory for this endpoint to use. This can be supplied using the Spring <bean class="MyBindingFactory"/> syntax.

    cxf:features

    The features that hold the interceptors for this endpoint. A list of {{<bean>}}s or {{<ref>}}s

    cxf:schemaLocations

    The schema locations for endpoint to use. A list of {{<schemaLocation>}}s

    cxf:serviceFactory

    The service factory for this endpoint to use. This can be supplied using the Spring <bean class="MyServiceFactory"/> syntax

    Wiki Markup
    {div}{div}

...