Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h2. 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.
{info}

h3. URI format

{code}
cxfbean:serviceBeanRef
{code}
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.

h3. Options
{div:class=confluenceTableSmall}
|| Name || Description || Example || Required? || Default Value ||
| {{cxfBeanBindingbus}} | CXF beanbus bindingreference specified by the {{\#}} notation.  The referenced object must be an instance of {{org.apache.camel.component.cxf.cxfbean.CxfBeanBindingBus}}. | {{cxfBindingbus=#bindingName#busName}} | No | {{DefaultCxfBeanBinding}} Default bus created by CXF Bus Factory |
| {{buscxfBeanBinding}} | CXF busbean referencebinding specified by the {{\#}} notation.  The referenced object must be an instance of {{org.apache.camel.component.cxf.Buscxfbean.CxfBeanBinding}}. | {{buscxfBinding=#busName#bindingName}} | No | Default bus created by CXF Bus Factory {{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}} |
| {{setDefaultBus}} | Will set the default bus when CXF endpoint create a bus by itself. | {{true}}, {{false}} | No | {{false}} |
| {{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}} |
| No | {{true}} |
{div}

h3. Headers
{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.
{note}

h3. 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.
{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.
{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.