bus是cxf的支架,它主要担当扩展及拦截器提供者的角色。
目前配置cxf的interceptor主要有2中方法:
1.通过xml配置文件的方法,使用<cxf:bus>
2.通过在java代码中使用编码的方式来添加拦截器
下面来看2个例子
1.配置文件方式配置 cxf bus interceptor
<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>
注意:在使用<cxf:bus>时候,一定要引入 命名空间xmlns:cxf=http://cxf.apache.org/core,及其对应的模式http://cxf.apache.org/schemas/core.xsd
2.java代码硬编码方式在服务端添加拦截器
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.getServiceFactory().getBus().getInInterceptors().add(new LoggingInInterceptor());
ep.getServiceFactory().getBus().getOutInterceptors().add(new LoggingOutInterceptor());
分享到:
相关推荐
1. 创建拦截器:首先,我们需要创建自定义拦截器类,实现`org.apache.cxf.interceptor.Interceptor`接口或者其子接口,如`org.apache.cxf.interceptor.ClientInterceptor`或`org.apache.cxf.interceptor....
3. **Spring集成**:在Spring3.2中,我们可以使用`<cxf:bus>`和`<cxf:interceptor>`标签将自定义拦截器注册到CXF Bus中。这样,Spring容器会管理拦截器的生命周期,并在需要时注入其他依赖。 4. **拦截器链**:CXF...
2. **配置Spring**:在Spring配置文件中,我们需要声明CXF的服务端点(Endpoint)和相关的Bus实例。Spring会自动管理这些组件,提供服务的生命周期控制。 ```xml xmlns:xsi=...
<cxf:bus-ref>myBus</cxf:bus-ref> </cxf:client> ``` 4. **执行调用**:在Spring配置生效后,可以直接通过客户端接口进行服务调用。 **总结** Apache CXF提供了简洁的API和工具,使得发布和调用SOAP 1.2 Web...
创建一个实现了`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.Phase`接口的类,如`SoapHeaderInterceptor`,并在`handleMessage`方法中处理头部信息: ```java public class SoapHeaderInterceptor...
- `org.apache.cxf.interceptor.ClientInterceptor` 和 `org.apache.cxf.interceptor.ServerInterceptor`:分别用于客户端和服务端。 - `org.apache.cxf.phase.PhaseInterceptor`:通用接口,适用于任何拦截器。 ...
- 如果需要更细粒度的控制,可以创建自定义的日志拦截器实现`org.apache.cxf.interceptor.LoggingInterceptor`接口,然后在CXF的`<cxf:inInterceptors>`或`<cxf:outInterceptors>`中注册。 5. **日志输出格式**: ...
import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; public class HelloWorldClientWithInterceptor { public static void main(String[] args)...
首先,我们需要创建一个实现了`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.PhaseInterceptor`接口的类。这个类通常会包含处理权限检查的业务逻辑。例如,你可以定义一个名为`...
CXF支持使用Interceptor来扩展服务行为,类似于Servlet中的Filter。Interceptor可以用来处理请求和响应消息的预处理和后处理操作。 1. **定义Interceptor**: - 继承`AbstractPhaseInterceptor`。 - 实现`...
- `org.apache.cxf.interceptor.Interceptor`:处理消息的拦截器,提供了对请求和响应进行预处理和后处理的机制。 - `org.apache.cxf.frontend.ServerFactoryBean`和`ClientFactoryBean`:分别用于配置和创建服务器...
Bus 是整个 CXF 架构的核心,类似于 Spring 中的 ApplicationContext,用于管理和配置 CXF 的各种资源,例如 WSDL 管理器、绑定工厂等。Bus 提供了一个可扩展的环境,允许开发者自定义资源或替换默认资源。默认情况...
此外,还需配置CXF的Bus实例,这是CXF框架的核心组件,负责处理服务请求的路由和转换。 #### 五、服务发布与客户端调用 服务发布后,客户端可通过调用特定的URL访问服务。CXF支持多种客户端编程模型,包括JAX-WS和...
1. **Bus**:CXF的核心组件,类似于Spring的ApplicationContext,管理共享资源,如WSDL管理者和绑定工厂。默认的Bus实现基于Spring,通过依赖注入连接各个运行时组件。BusFactory负责创建Bus,SpringBusFactory是...
CXF的Bus是其核心组件,相当于Spring的ApplicationContext,用于管理和共享资源。默认的Bus实现是基于Spring的,通过依赖注入将各个组件连接在一起。BusFactory负责创建Bus,SpringBusFactory是默认实现,它会自动...