Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

CXF Bean Component

The cxfbean: component allows other Camel endpoints to send exchange and invoke Web service bean objects. (Currently, it only supports JAXRS, JAXWS(new to camel2.1) annotated service bean.)

Info

CxfBeanEndpoint is a ProcessorEndpoint so it has no consumers. It works similarly to a Bean component.

URI format

Code Block
cxfbean:serviceBeanRef

Where serviceBeanRef is a registry key to look up the service bean object. If serviceBeanRef references a List object, elements of the List are the service bean objects accepted by the endpoint.

Options

Wiki Markup
{div:class=confluenceTableSmall}
|| Name || Description || Example || Required? || Default Value ||
| {{bus}} | CXF bus reference specified by the {{\#}} notation. The referenced object must be an instance of {{org.apache.cxf.Bus}}. | {{bus=#busName}} | No | Default bus created by CXF Bus Factory |
| {{cxfBeanBinding}} | CXF bean binding specified by the {{\#}} notation.  The referenced object must be an instance of {{org.apache.camel.component.cxf.cxfbean.CxfBeanBinding}}. | {{cxfBinding=#bindingName}} | No | {{DefaultCxfBeanBinding}} |
| {{headerFilterStrategy}} | Header filter strategy specified by the {{\#}} notation.  The referenced object must be an instance of {{org.apache.camel.spi.HeaderFilterStrategy}}. | {{headerFilterStrategy=#strategyName}} | No | {{CxfHeaderFilterStrategy}} |
| {{populateFromClass}}\\ | Since 2.3, the wsdlLocation annotated in the POJO is ignored (by default) unless this option is set to  {{false.}} Prior to 2.3, the wsdlLocation annotated in the POJO is always honored and it is not possible to ignore.\\ | {{true}}, {{false}}| No | {{true}} |
| {{providers}} | Since 2.5, setting the providers for the CXFRS endpoint. |{{providers=#providerRef1,#providerRef2}}| No | {{null}}|
| {{setDefaultBus}} | Will set the default bus when CXF endpoint create a bus by itself. | {{true}}, {{false}} | No | {{false}} |
{div}

Headers

Wiki Markup
{div:class=confluenceTableSmall}
|| Name || Description || Type || Required? || Default Value || In/Out || Examples ||
| {{CamelHttpCharacterEncoding}} (before 2.0-m2: {{CamelCxfBeanCharacterEncoding}}) | Character encoding | {{String}} | No | None | In | ISO-8859-1 |
| {{CamelContentType}} (before 2.0-m2: {{CamelCxfBeanContentType}}) | Content type | {{String}} | No | \**/*\* | In | {{text/xml}} |
| CamelHttpBaseUri \\
(2.0-m3 and before: {{CamelCxfBeanRequestBasePath}}) | The value of this header will be set in the CXF message as the {{Message.BASE_PATH}} property.  It is needed by CXF JAX-RS processing.  Basically, it is the scheme, host and port portion of the request URI. | {{String}} | Yes | The Endpoint URI of the source endpoint in the Camel exchange | In | [http://localhost:9000] |
| {{CamelHttpPath}} (before 2.0-m2: {{CamelCxfBeanRequestPat{}}}h) | Request URI's path | {{String}} | Yes | None | In | {{consumer/123}} |
| {{CamelHttpMethod}} (before 2.0-m2: {{CamelCxfBeanVerb}}) | RESTful request verb | {{String}} | Yes | None | In | {{GET}}, {{PUT}}, {{POST}}, {{DELETE}} |
| {{CamelHttpResponseCode}} | HTTP response code | {{Integer}} | No \\ | None | Out \\ | 200 \\ |
{div}
Note

Currently, CXF Bean component has (only) been tested with Jetty HTTP component it can understand headers from Jetty HTTP component without requiring conversion.

A Working Sample

This sample shows how to create a route that starts a Jetty HTTP server. The route sends requests to a CXF Bean and invokes a JAXRS annotated service.

First, create a route as follows. The from endpoint is a Jetty HTTP endpoint that is listening on port 9000. Notice that the matchOnUriPrefix option must be set to true because RESTful request URI will not match the endpoint's URI http:­//localhost:9000 exactly.

Wiki Markup
{snippet:id=routeDefinition|lang=xml|url=camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml}

The to endpoint is a CXF Bean with bean name customerServiceBean. The name will be looked up from the registry. Next, we make sure our service bean is available in Spring registry. We create a bean definition in the Spring configuration. In this example, we create a List of service beans (of one element). We could have created just a single bean without a List.

Wiki Markup
{snippet:id=beanDefinition|lang=xml|url=camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/cxfbean/CxfBeanTest-context.xml}

That's it. Once the route is started, the web service is ready for business. A HTTP client can make a request and receive response.