`
caniggia1986
  • 浏览: 149662 次
  • 性别: 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发布WebService加入拦截器

    CXF发布WebService加入拦截器

    webservice的cxf框架拦截器demo

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

    CXF 2.4 WebService 发布和调用的身份验证和获取示例代码

    其中配置了对传入请求的拦截器用以验证调用者身份 验证程序: WsServerAuthHandler. 这里只需要提供调用者应该使用的正确的口令. 是否和调用者实际传入的口令一致,由cxf完成. web.xml ------------------------- ...

    springBoot完整整合WebService框架CXF示例

    完整可用的spring整合CXF示例项目,包括服务发布端和调用端两个项目,包括CXF拦截器的实现的简单的授权校验

    CXF 使用实例集成

    CXF webservice 使用实例,CXF创建webservice以及调用示例;WEBSERVICE输入、输出拦截器设置;用户验证;文件上传等。附带所有使用到的JAR包。

    Webservice-CXF实用手册学习大全

    wsdl解析,soap消息格式 输入输出参数的注解,Web服务上下文 Jax—Ws异常处理,MTOM文件传输 Jax-Rs,Web服务生命周期 Cxf集成Spring 安全机制(用户命令+数字签名+混合验证) Cxf拦截器特征机制,Jax-Rs异步调用

    spring与cxf集成配置小实例

    用于webservice的开发,主要用到spring+cxf的方式实现webservice的发布与简单调用测试,不懂得可以留言给我,比较显新的框架配置,希望你会喜欢!(并包含拦截器的配置!)

    quarkus-cxf-interceptor-issue:回购以复制问题https:github.comquarkiversequarkus-cxfissues121

    cxf拦截器问题项目 该项目将通过使用quarkus-cxf插件注册CXF拦截器来复制该问题。 问题的详细信息可以在-&gt; 找到 项目结构 这是一个多模块的Maven项目 soap-client模块是由cxf插件生成的soap webservice客户端构件...

    ws_proxy:一个简单的Web服务消息代理系统

    ws_proxya simple webservice ... }}这个拦截器可以通过指定放置在消息接收的各个阶段,如receive、pre-marshal、marshal-ending等拦截器会调用负载均衡的逻辑,分配对应的服务端,将消息放到对应的消息队列,会有

    WebService(springboot整合案例 wsdl)

    这是模拟企业用户的开发,在远程调用的时候客户端必须传入密码,这里通过cxf框架 的自定义拦截器实现jax-ws,jax-rs下次在学习下。 创建springboot项目: 导入起步依赖以及junit pom文件如下: org.spring...

    Java EE常用框架.xmind

    在web.xml配置拦截器 在Shiro配置文件上配置在web.xml对应的bean 配置安全管理器 配置自定义的realm Shiro过滤器 anon:例子/admins/**=anon 没有参数,表示可以匿名使用。 authc:例如/admins/...

    【尚硅谷】徐靖博 最新电商项目实战(完结)

    8 I7 X) ^ 98.05 cxf框架的usernametoken安全拦截器 99.06 cxf客户端加入安全拦截( L+ {$ q; @" j" N e 100.07 订单和结算的总体流程( U# O4 ^: y0 h" Y7 W 101.08 订单拆单的介绍_视频补充' Q( R9 W9 g4 ]/ X6 b% B...

    基于jbpm与activiti的工作流平台技术架构介绍

    系统提供在线流程设计器,在线表单设计器,代码生成器,结合BPMX3的基础组件,以实现复杂的流程业务应用。基础组件包括: Spring基础组件库,报表引擎,数据库访问模块,短信模块,后台定时任务调用组件,短信访问...

Global site tag (gtag.js) - Google Analytics