`
caniggia1986
  • 浏览: 151702 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CXF拦截器获取调用方法名

    博客分类:
  • java
阅读更多
//拦截器
package me.yourname.webservice.cxfinterceptor;

import java.lang.reflect.Method;
import org.apache.cxf.frontend.MethodDispatcher;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.service.Service;
import org.apache.cxf.service.model.BindingOperationInfo;
public class MethodToInvokeInterceptor extends AbstractPhaseInterceptor<Message> {
    //至少要一个带参的构造函数
    public MethodToInvokeInterceptor(String phase) {
        super(phase);
    }
    public MethodToInvokeInterceptor() {
		super(Phase.USER_LOGICAL);
	}
    public void handleMessage(Message message) throws Fault { 
    	Exchange exchange = message.getExchange();
		BindingOperationInfo bop = exchange.get(BindingOperationInfo.class);
 		MethodDispatcher md = (MethodDispatcher) exchange.get(Service.class)
				.get(MethodDispatcher.class.getName());
 		Method method = md.getMethod(bop);
		System.out.println("********method name:" + method.getName()); 
    }
}
//handler
package me.yourname.webservice.handler;

import java.lang.reflect.Method;

import javax.xml.ws.handler.Handler;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPMessageContext;

import org.apache.cxf.frontend.MethodDispatcher;
import org.apache.cxf.jaxws.context.WrappedMessageContext;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
import org.apache.cxf.service.Service;
import org.apache.cxf.service.model.BindingOperationInfo;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
@Component("methodToInvokeHandler") 
public class MethodToInvokeHandler implements Handler<SOAPMessageContext> {

	private static Logger log = Logger.getLogger(MethodToInvokeHandler.class);

	public void close(MessageContext messageContext) {
		log.info("MethodToInvokeHandler close");
	}

	public boolean handleFault(SOAPMessageContext messageContext) {
		log.error("MethodToInvokeHandler error");
		return false;
	}

	public boolean handleMessage(SOAPMessageContext messageContext) { 
		WrappedMessageContext wmc = (WrappedMessageContext) messageContext;
		Message m = wmc.getWrappedMessage();
		Exchange exchange = m.getExchange();
		BindingOperationInfo bop = exchange.get(BindingOperationInfo.class);
 		MethodDispatcher md = (MethodDispatcher) exchange.get(Service.class)
				.get(MethodDispatcher.class.getName());
 		Method method = md.getMethod(bop);
 		System.out.println("invoke method:"+method.getName());
 		return true;
	}
}
分享到:
评论
2 楼 lglhlg 2018-10-31  
拦截器里  super(Phase.USER_LOGICAL);   构造方法里需要使用这个
1 楼 glyustb 2014-03-20  
MethodDispatcher md = (MethodDispatcher) exchange.get(Service.class) 
                .get(MethodDispatcher.class.getName()); 
        Method method = md.getMethod(bop);
唉这里会抛空指针啊,楼主,你把我坑惨了

相关推荐

    CXF拦截器(Interceptor)的使用

    标题:“CXF拦截器(Interceptor)的使用” 描述:“讲解了cxf实现拦截器的原因、核心API及使用方法” 在深入探讨CXF拦截器的使用之前,我们首先需要理解其在CXF框架中的核心作用与价值。Apache CXF是一个开源框架,...

    CXF3.0+Spring3.2 自定义拦截器

    1. **CXF拦截器基础**:CXF的拦截器是基于JAX-WS规范的Handler Chain模型,分为In-bound(请求进来时触发)和Out-bound(响应出去时触发)两类。拦截器可以通过在服务配置中指定,或者通过编程方式动态添加。 2. **...

    08.CXF拦截器的理论以及如何为CXF的客户端和服务器端添加拦截器

    **CXF拦截器理论与应用** 在Web服务领域,Apache CXF是一个强大的开源框架,它提供了构建和消费SOAP和RESTful服务的能力。拦截器是CXF框架中的一个重要组成部分,允许开发者在服务调用的生命周期中插入自定义逻辑,...

    CXF使用EndpointImpl发布WebService加入拦截器

    在Java世界中,Apache CXF是一个广泛使用的开源框架,它允许开发者创建和消费Web服务。在Web服务开发中,拦截器扮演着至关重要的角色,...总的来说,理解并熟练运用CXF拦截器对于任何CXF开发者来说都是一项重要的技能。

    Cxf拦截器实例

    通过学习和理解这些示例,开发者可以更好地利用CXF拦截器来扩展和定制自己的Web服务,提高应用程序的灵活性和可维护性。无论是客户端还是服务器端,拦截器都是一个强大的工具,能够帮助我们控制和优化服务通信的每个...

    CXF发布WebService加入拦截器

    CXF拦截器是一种AOP(面向切面编程)的概念,它们是执行特定任务的独立单元,可以在消息传递的生命周期中不同阶段被调用。拦截器可以用来处理如认证、授权、日志记录、性能监控、数据转换等任务,增强了服务的功能和...

    webservice的cxf框架拦截器demo

    我们可以创建实现`org.apache.cxf.interceptor.ClientInterceptor`接口的类,并通过`ClientProxy.getClient()`方法获取代理对象,然后调用`getOutInterceptors()`或`getInFaultInterceptors()`等方法添加拦截器。...

    spring集成cxf客户端和服务器端demo(含自定义拦截器)

    5. **自定义拦截器**:拦截器是CXF提供的一种扩展机制,可以在服务调用前后执行自定义逻辑。在这个示例中,可能会有一个或多个自定义拦截器,它们可能用于日志记录、权限检查、数据校验等。拦截器通过实现CXF提供的...

    10.为CXF服务器端添加自定义拦截器进行权限检查

    在开发基于CXF的Web服务时,为了确保系统的安全性和数据的完整性,通常需要对请求进行权限检查。本文将深入探讨如何为CXF服务器...在学习和应用这些知识时,结合实际案例和实践操作将有助于更好地掌握CXF拦截器的使用。

    11.为CXF客户端添加自定义拦截器完成权限控制

    拦截器是一种设计模式,它允许在方法调用前后执行额外的操作,比如日志记录、事务管理或如这里的权限检查。在CXF中,拦截器可以插入到消息处理管道中,对请求和响应进行处理。 要为CXF客户端添加自定义拦截器,我们...

    13.为CXF与Spring整合发布WebService添加拦截器进行权限控制

    首先,我们需要理解CXF拦截器的概念。拦截器是CXF提供的一种机制,它允许我们在Web服务调用的生命周期中的不同阶段插入自定义逻辑,如消息的发送和接收。这为我们提供了在服务执行前、后或过程中进行额外操作的机会...

    CXF-拦截器-权限控制-登录校验

    本文将深入探讨"CXF拦截器-权限控制-登录校验"这一主题。 首先,我们需要了解什么是拦截器。在CXF框架中,拦截器是实现业务逻辑和基础架构之间解耦的一种方式。它们可以插入到服务调用的生命周期中,在消息发送前或...

    webservice的cxf框架拦截器demo.rar

    拦截器是CXF框架中的一个重要组件,它们在消息传递的过程中插入到服务调用链中,可以在消息发送前或接收到消息后执行自定义逻辑。拦截器可以用来添加额外的头部信息、验证消息、实现事务控制、记录日志或者进行安全...

    cxf框架实现webservice调用demo

    - 使用CXF的拦截器机制增强服务功能,如日志记录、安全检查等。 通过以上讲解,你应该对使用CXF框架实现Web服务有了基本的理解。实际操作时,需要结合具体的代码示例和项目需求来学习和应用这些知识点。在...

    CXF3.1.16 +Spring4 +MyBatis + Maven自定义拦截器 WebService实例源码下载

    "CXF3.1.16 +Spring4 +MyBatis + Maven自定义拦截器 WebService实例源码下载" 这个标题揭示了该项目的核心技术栈,包括: 1. CXF 3.1.16:这是一个开源的服务框架,用于构建和开发服务,支持SOAP和RESTful Web服务...

    CXF和Spring整合,并且添加拦截器

    **标题:“CXF和Spring整合,并且添加拦截器”*...4. **添加拦截器**:CXF允许我们定义拦截器,以便在服务调用前后执行自定义逻辑。这可以通过在Spring配置文件中声明拦截器并将其绑定到Bus或Endpoint来实现。 ```xml ...

    webservice拦截器demo-服务端和调用端

    在CXF中,客户端拦截器同样需要实现`SOAPHandler&lt;SOAPMessageContext&gt;`接口,并在`handleMessage()`方法中实现自定义逻辑。此外,客户端拦截器可以通过`ClientProxyFactoryBean`来配置,将其添加到客户端代理的处理...

    cxfSecurity.rar cxf加密 加拦截器

    3. **拦截器**:在CXF中,拦截器是一种机制,允许开发者在服务调用前或调用后插入自定义逻辑,例如添加认证、日志记录或数据加密/解密等。 4. **加密**:数据保护手段,确保信息在传输过程中不被非法获取,通常通过...

    CXF V3.2.4 实现的WebService调用(带安全认证)

    3. **应用拦截器**:将配置好的拦截器添加到CXF客户端,以便在发送请求时应用安全策略。 ```java client.getOutInterceptors().add(wssOut); ``` 4. **调用Web服务**:现在,客户端已经准备好安全地调用Web服务...

    cxf做的webservice对外提供接口调用

    6. **服务发布配置**:例如,CXF的Spring配置文件(如`cxf-servlet.xml`),用于配置服务端点、拦截器等。 7. **客户端调用代码**:如果提供给调用方的“包需的找我要”,可能包括了CXF生成的客户端 stub 或 JAX-WS...

Global site tag (gtag.js) - Google Analytics