Configuring the Bus
The Bus is the backbone of the CXF architecture. It manages extensions and acts as an interceptor provider. The interceptors for the bus will be added to the respective inbound and outbound message and fault interceptor chains for all client and server endpoints created on the bus (in its context). By default, it contributes no interceptors to either of these interceptor chain types, but they can be added via configuration files or with Java code, as shown below.
Note: For endpoint-specific configuration (as opposed to configuration for all for endpoints created by the CXF bus), look at the Logging Messages section for code samples.
Using a Configuration File
Here, simply define a bus element in your Spring configuration file, and add child elements as required, for example:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="logOutbound" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
<cxf:bus>
<cxf:outInterceptors>
<ref bean="logOutbound"/>
</cxf:outInterceptors>
</cxf:bus>
</beans>
The configurable properties of the bus are defined in the bus configuration schema http://cxf.apache.org/schemas/core.xsd. Be sure to include the namespace - URI pair for this schema in the schemaLocation attribute of the <beans> element.
The <bus> element supports the following child elements:
Name | Value |
---|
inInterceptors | The interceptors contributed to inbound message interceptor chains. A list of <bean>s or <ref>s. |
inFaultInterceptors | The interceptors contributed to inbound fault interceptor chains. A list of <bean>s or <ref>s. |
outInterceptors | The interceptors contributed to outbound message interceptor chains. A list of <bean>s or <ref>s. |
outFaultInterceptors | The interceptors contributed to outbound fault interceptor chains. A list of <bean>s or <ref>s. |
properties | Contextual properties which will be applied to all endpoints and clients using this bus |
features | The features applied to the bus. A list of <bean>s or <ref>s. See here for a list of available features. |
Configuration using Java code
Although usually less convenient, interceptors can be added to the bus using Java code. Given an EndpointImpl object, the bus can be accessed (and interceptors added) as follows:
import javax.xml.ws.Endpoint;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.EndpointImpl;
Object implementor = new GreeterImpl();
EndpointImpl ep = (EndpointImpl) Endpoint.publish("http://localhost/service", implementor);
ep.getInInterceptors().add(new LoggingInInterceptor());
ep.getOutInterceptors().add(new LoggingOutInterceptor());
Extending the Bus
TODO: Explain how to add a custom bus extension (META-INF/cxf/cxf.extension ...).