拦截器分为Service端和Client端
拦截器是在发送soap消息包的某一个时机拦截soap消息包,对soap消息包的数据进行分析或处理。分为CXF自带的拦截器和自定义的拦截器
1、Service端:
通过将org.apache.cxf.jaxws.EndpointImpl类的方法即可实现
发布Web Service 方法可以通过Endpoint.publish()方法,此方法返为EndpointImpl,所以为Service端添加拦截器很简单。
部分代码:
UserService us = new UserServiceImpl();
String address = "http://192.168.10.254:9999/crazyit";
EndpointImpl ep = (EndpointImpl)Endpoint.publish(address , us);
//下面方法就可以添加拦截器(CXF提供的拦截器)
//cxf-2.2.10.jar org.apache.cxf.interceptor.* (CXF提供的拦截器)
ep.getOutInterceptors()
.add(new LoggingOutInterceptor());
ep.getInInterceptors()
.add(new LoggingInInterceptor());
ep.getInInterceptors()
.add(new AuthIntercetpr()); //此拦截器是自定义的拦截器。
2、Client端
客户端可以通过对org.apache.cxf.frontend.ClientProxy中的getClient()方法获取org.apache.cxf.endpoint.Client对象,该对象可以为客户端添拦截器。
部分代码
//为客户端添加拦截器
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(us);
client.getInInterceptors().add(new LoggingInInterceptor());
client.getOutInterceptors().add(new LoggingOutInterceptor());
//自定义拦截器
client.getOutInterceptors().add(new AddHeaderInterceptor("crazyit" , "crazyit.org2"));
3、自定义的拦截器
自定义拦截器需要继承org.apache.cxf.phase.AbstractPhaseInterceptor 抽象类,并实现其handleMessage方法,与重写自定义的构造器(由于AbstractPhaseInterceptor 没有无参构造器,所以要在自定义构拦截器的造器中调用supper(带参数))。
部分代码
public class AuthIntercetpr
extends AbstractPhaseInterceptor<SoapMessage>
{
public AuthIntercetpr()
{
//子类总会调用父类的构造器,
//默认是调用无参数的构造器。
//指定该拦截器在哪个阶段被激发
super(Phase.PRE_INVOKE);
}
//处理消息
public void handleMessage(SoapMessage message)
{
System.out.println("==================" + message);
//获取SOAP消息的全部头
List<Header> headers = message.getHeaders();
if(headers.size() < 1)
{
throw new Fault(new SOAPException("SOAP消息头格式不对哦!"));
}
for(Header header : headers)
{
SoapHeader soapHeader = (SoapHeader)header;
//取出SOAP的Header元素
Element element = (Element)soapHeader.getObject();
checkSOAPHeader(element);
}
}
}
分享到:
相关推荐
在开发基于CXF的Web服务时,为了确保系统的安全性和数据的完整性,通常需要对请求进行权限检查。本文将深入探讨如何为CXF服务器...在学习和应用这些知识时,结合实际案例和实践操作将有助于更好地掌握CXF拦截器的使用。
1. **CXF拦截器基础**:CXF的拦截器是基于JAX-WS规范的Handler Chain模型,分为In-bound(请求进来时触发)和Out-bound(响应出去时触发)两类。拦截器可以通过在服务配置中指定,或者通过编程方式动态添加。 2. **...
本节我们将深入探讨如何为CXF客户端添加自定义拦截器以实现权限控制。 首先,理解拦截器的概念是至关重要的。拦截器是一种设计模式,它允许在方法调用前后执行额外的操作,比如日志记录、事务管理或如这里的权限...
本篇将深入探讨CXF拦截器的理论基础,并演示如何为CXF的客户端和服务端添加拦截器。 ### 一、拦截器概述 拦截器是一种设计模式,它在对象交互的过程中插入额外的功能,而无需修改原有的代码。在CXF中,拦截器遵循...
在Java世界中,Apache CXF是一个广泛使用的开源框架,它允许开发者创建和消费Web服务。在Web服务开发中,拦截器扮演着至关重要的角色,...总的来说,理解并熟练运用CXF拦截器对于任何CXF开发者来说都是一项重要的技能。
本篇文章将深入探讨如何使用CXF来开发具有权限控制功能的Web Service,并通过拦截器实现这一目标。 首先,我们需要理解Web Service拦截器的概念。在CXF中,拦截器是处理消息生命周期中的关键组件,它们可以在消息...
在Spring框架中,我们可以使用Spring的`@Bean`注解来配置CXF拦截器。首先,我们需要创建一个实现了`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.PhaseInterceptor`接口的类。这个类通常会包含处理...
在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而WebService之自定义拦截器的实现,无论是...通过理解并熟练掌握CXF框架下的拦截器使用,开发者可以更好地驾驭Web服务,实现更高效、更安全的应用程序。
在本项目中,"spring集成cxf客户端和服务器端demo(含自定义拦截器)"是一个实战案例,展示了如何在Spring框架下与Apache CXF服务进行整合,实现客户端和服务端的交互,并利用拦截器来增强功能。以下是这个项目涉及的...
标题:“CXF拦截器(Interceptor)的使用” 描述:“讲解了cxf实现拦截器的原因、核心API及使用方法” 在深入探讨CXF拦截器的使用之前,我们首先需要理解其在CXF框架中的核心作用与价值。Apache CXF是一个开源框架,...
**标题:“CXF和Spring整合,并且添加拦截器”*...4. **添加拦截器**:CXF允许我们定义拦截器,以便在服务调用前后执行自定义逻辑。这可以通过在Spring配置文件中声明拦截器并将其绑定到Bus或Endpoint来实现。 ```xml ...
总结来说,CXF拦截器是实现Web服务功能扩展和控制的重要工具。通过合理使用拦截器,开发者可以定制消息处理流程,提高服务的安全性和效率。通过阅读和分析给定的压缩包文件,你可以学习到更多关于CXF拦截器的具体...
这里少了一个类,是根据实体类生成xml的文件下载地址为:http://download.csdn.net/detail/qq_14996421/9495688
【标题解析】 ...这个项目提供了从设计、实现到测试Web服务的完整示例,对于学习和理解CXF、Spring、MyBatis和Maven的集成,以及如何在Web服务中实现自定义拦截器和安全验证机制,具有很高的参考价值。
【标题】中的"Apache CXF Web Service Development"指的是使用Apache CXF框架进行Web服务开发的过程。这通常包括了创建服务接口、实现服务逻辑、配置服务端点、以及发布和调用服务等步骤。源码部分可能包含了示例...
在CXF中,我们可以通过实现`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.Phase`接口,然后将这些拦截器添加到服务端的拦截器链中。 接着,客户端拦截器(inter_client)同样重要。它们允许我们在...
CXF+Spring+自定义拦截器 webservice源码下载
此外,还涉及了如何使用CXF的插件机制来扩展Web服务的功能,例如使用拦截器来处理消息的拦截和过滤。 对于RESTful Web服务的开发,本书同样提供了指导,包括如何利用CXF将Java方法映射为RESTful资源、如何处理...
在CXF服务端,你可以通过实现`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.PhaseInterceptorChain`接口的类来创建自定义拦截器,并将它们添加到服务的拦截器链中。 4. **“inter_client”**: 这...