上一篇文章已经写了spring和cxf的整合,这篇文章主要写怎么添加cxf的拦截器(Intercepter)
通过Intercepter可以灵活的设置cxf客户端和服务器端代码而不用修改主业务代码
下面写了一个简单的例子,也可以通过该例子改造成权限验证等
代码如下:
SampleInterceptor
写道
package com.benben.Interceptor;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
@SuppressWarnings("rawtypes")
public class SampleInterceptor extends AbstractPhaseInterceptor {
public SampleInterceptor() {
super(Phase.PRE_INVOKE);
}
public void handleMessage(Message message) throws Fault {
System.out.println("############handleMessage##########");
System.out.println(message);
if (message.getDestination() != null) {
System.out.println(message.getId() + "#" + message.getDestination().getMessageObserver());
}
if (message.getExchange() != null) {
System.out.println(message.getExchange().getInMessage() + "#" + message.getExchange().getInFaultMessage());
System.out.println(message.getExchange().getOutMessage() + "#" + message.getExchange().getOutFaultMessage());
}
}
}
服务器端主要配置文件为:
写道
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<bean id="userServiceBean" class="com.benben.webservice.service.impl.UserServiceImpl"/>
<bean id="inMessageInterceptor" class="com.benben.Interceptor.SampleInterceptor">
<constructor-arg value="receive"/>
</bean>
<bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
<!-- 注意下面的address,这里的address的名称就是访问的WebService的name -->
<jaxws:server id="userService" serviceClass="com.benben.webservice.service.UserService" address="/Users">
<jaxws:serviceBean>
<!-- 要暴露的 bean 的引用 -->
<ref bean="userServiceBean"/>
</jaxws:serviceBean>
<jaxws:inInterceptors>
<ref bean="inMessageInterceptor"/>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<ref bean="outLoggingInterceptor"/>
</jaxws:outInterceptors>
</jaxws:server>
</beans>
客户端主要配置文件
写道
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<jaxws:client id="userWsClient" serviceClass="com.benben.webservice.service.UserService"
address="http://localhost/cxfTest/services/Users">
<jaxws:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
<bean class="com.benben.Interceptor.SampleInterceptor"/>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<bean class="com.benben.Interceptor.SampleInterceptor"/>
<!--<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>-->
</jaxws:outInterceptors>
</jaxws:client>
</beans>
分享到:
相关推荐
当我们需要在CXF和Spring整合的基础上发布Web服务,并对权限进行控制时,可以利用拦截器来实现这一目标。本文将详细介绍如何为CXF与Spring整合发布WebService添加拦截器进行权限控制。 首先,我们需要理解CXF拦截器...
3. **Spring集成**:在Spring3.2中,我们可以使用`<cxf:bus>`和`<cxf:interceptor>`标签将自定义拦截器注册到CXF Bus中。这样,Spring容器会管理拦截器的生命周期,并在需要时注入其他依赖。 4. **拦截器链**:CXF...
- 配置CXF拦截器和处理器:Spring可以用来管理CXF的拦截器和消息处理器,使它们能够作为Spring beans进行注入和管理。 ```xml ``` 4. **运行环境:MyEclipse** MyEclipse是一款集成开发环境,特别...
- 可以通过Spring的AOP支持实现拦截器、FaultHandler、OutFaultInterceptors等,增强服务处理能力。 4. **CXF与Spring的集成模式**: - **Spring-WS模式**:基于Spring-WS模块,适用于基于WSDL的Web服务。 - **...
4. **Spring的AOP集成**:结合Spring的AOP,我们可以为CXF的服务添加拦截器或过滤器,实现事务管理、日志记录、安全性检查等功能,增强了服务的灵活性和安全性。 5. **CXF的Bus对象**:CXF的Bus对象是整个框架的...
标题中的"CXF与Spring整合下载文件四"表明这是一个关于整合Apache CXF(一个开源的Java框架,用于构建和开发服务导向架构(SOA)应用程序)和Spring框架的教程或资源集合。Spring是一个广泛使用的Java应用框架,它...
在本项目中,"spring集成cxf客户端和服务器端demo(含自定义拦截器)"是一个实战案例,展示了如何在Spring框架下与Apache CXF服务进行整合,实现客户端和服务端的交互,并利用拦截器来增强功能。以下是这个项目涉及的...
- 日志和监控:在生产环境中,对服务的运行状态进行日志记录和监控是必要的,可以使用Spring的AOP和CXF的拦截器来实现。 - 性能优化:根据项目需求,可能需要对服务的性能进行优化,如使用HTTP缓存、减少网络通信...
只需简单地在Spring配置中定义拦截器,并将它们添加到服务的处理链中。 4. **服务发布与发现**:CXF可以利用Spring的ApplicationContext来发布和查找服务。这样,服务的注册和查找过程变得更加简洁,符合SOA...
在IT行业中,CXF与Spring的整合是构建高效、可扩展的企业级Web服务的重要...在实际项目中,根据业务需求,可能还需要添加更多的依赖和配置,如安全、拦截器、数据绑定等,但这个基础案例足以让你理解整合的基本原理。
- **异常处理和拦截器**:Spring和CXF的结合使得我们可以使用Spring的AOP来处理服务调用中的异常,或者定义自定义的拦截器来增强服务的功能,如日志记录、性能监控等。 - **测试支持**:Spring的测试框架如`...
- **拦截器**:CXF支持Spring Bean作为拦截器,可以在服务调用前后执行自定义逻辑。 - **异常处理**:Spring可以统一处理CXF服务抛出的异常,提供更友好的错误信息。 综上所述,整合CXF和Spring可以简化Web服务的...
CXF还可以利用Spring的AOP支持,为服务添加拦截器、过滤器等,实现事务管理、日志记录、安全控制等功能。 5. **异常处理** Spring可以帮助统一处理CXF服务抛出的异常,通过配置异常处理器,将服务层的异常转化为...
【标题解析】 ...这个项目提供了从设计、实现到测试Web服务的完整示例,对于学习和理解CXF、Spring、MyBatis和Maven的集成,以及如何在Web服务中实现自定义拦截器和安全验证机制,具有很高的参考价值。
Struts2.3.4版本包含了一些关键改进,如增强了拦截器的灵活性,提供了更多的插件支持,以及对最新Java和Web技术的兼容性。Struts2可以与CXF结合,通过Action跳转到不同的服务接口,从而提供动态的服务调用能力。 ...
5. **CXF拦截器**:CXF拦截器是处理消息传递过程中的钩子,可以在消息发送前、发送后、接收前、接收后等阶段进行操作。在这个示例中,拦截器用于实现简单的授权校验。你可以定义一个实现了`ClientInterceptor`或`...
通过Spring AOP或CXF的拦截器,可以添加自定义的日志或监控逻辑。 9. **错误处理**: 通过Spring的异常翻译机制,可以将服务端的业务异常转换为Web服务标准的Fault响应,提供友好的错误信息给客户端。 通过以上...
WebService小白学习 之 Spring整合CXF,添加拦截器。 博客学习地址:https://blog.csdn.net/qq_37902949/article/details/81262826