LibraryLink ToToggle FramesPrintFeedback

CXF Design

FUSE Mediation Router provides a component API , after defined the endpoint URI format, we just need implement the FUSE Mediation Router component API by using CXF as a library to create the client and server for camel-cxf component's consumer and producer.

CXFConsumer works as the CXF server, so we create the CXF server with the CXFEndpoint which holds the cxf endpoint information such as SEI class, wsdl location, service name and endpoint name etc. You can configure the cxf endpoint according to this schema in spring. Now we just leverage the CXF's invoker to override the default invoker by setting a CamelInvoker to the ServerFactoryBean.

CXF Client is used to send out the incoming message from the CXFProducer and pass the response back. To support the client which just sends the stream request , we write the CxfClient and CxfClientFactoryBean.

camel-cxf component supports to handle the CXF message with different DataFormat.

To get the best reuse of the CXF generic message layer, we use the CXF feature API to setup the interceptors for different types message handling.

if (!dataFormat.equals(DataFormat.POJO)...) {
   List<AbstractFeature> features = new ArrayList<AbstractFeature>();
   // adding the logging feature here for debug
   features.add(new LoggingFeature());

   if (dataFormat.equals(DataFormat.PAYLOAD)) {
       features.add(new PayLoadDataFormatFeature());       
   }
   
   if (dataFormat.equals(DataFormat.MESSAGE)) {
       features.add(new MessageDataFormatFeature());
   }
   
  // set the feature to the ServerFactoryBean or ClientFactoryBean 
  ...
}


Currently , we introduce Camel Transport for CXF to integrate the FUSE Mediation Router as an transport library in CXF.

As CXF transport API side, CXF transport API includes Conduit and Destination that we need to implement with FUSE Mediation Router. We use the the CamelTemplate to send out the message for a certain endpoint in the CamelConduit, and bind a consumer process for the CamelDestination. When you specify the endpoint URI that start with camel in CamelConduit or CamelDestination the endpoint address, Camel transport will bind it to the endpoint which is in the CamelContext.

Here are some examples of configuring the Camel transport.