//拦截器
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;
}
}
分享到:
相关推荐
CXF发布WebService加入拦截器
webservice拦截器demo-服务端和调用端
其中配置了对传入请求的拦截器用以验证调用者身份 验证程序: WsServerAuthHandler. 这里只需要提供调用者应该使用的正确的口令. 是否和调用者实际传入的口令一致,由cxf完成. web.xml ------------------------- ...
完整可用的spring整合CXF示例项目,包括服务发布端和调用端两个项目,包括CXF拦截器的实现的简单的授权校验
CXF webservice 使用实例,CXF创建webservice以及调用示例;WEBSERVICE输入、输出拦截器设置;用户验证;文件上传等。附带所有使用到的JAR包。
wsdl解析,soap消息格式 输入输出参数的注解,Web服务上下文 Jax—Ws异常处理,MTOM文件传输 Jax-Rs,Web服务生命周期 Cxf集成Spring 安全机制(用户命令+数字签名+混合验证) Cxf拦截器特征机制,Jax-Rs异步调用
用于webservice的开发,主要用到spring+cxf的方式实现webservice的发布与简单调用测试,不懂得可以留言给我,比较显新的框架配置,希望你会喜欢!(并包含拦截器的配置!)
cxf拦截器问题项目 该项目将通过使用quarkus-cxf插件注册CXF拦截器来复制该问题。 问题的详细信息可以在-> 找到 项目结构 这是一个多模块的Maven项目 soap-client模块是由cxf插件生成的soap webservice客户端构件...
ws_proxya simple webservice ... }}这个拦截器可以通过指定放置在消息接收的各个阶段,如receive、pre-marshal、marshal-ending等拦截器会调用负载均衡的逻辑,分配对应的服务端,将消息放到对应的消息队列,会有
这是模拟企业用户的开发,在远程调用的时候客户端必须传入密码,这里通过cxf框架 的自定义拦截器实现jax-ws,jax-rs下次在学习下。 创建springboot项目: 导入起步依赖以及junit pom文件如下: org.spring...
在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...
系统提供在线流程设计器,在线表单设计器,代码生成器,结合BPMX3的基础组件,以实现复杂的流程业务应用。基础组件包括: Spring基础组件库,报表引擎,数据库访问模块,短信模块,后台定时任务调用组件,短信访问...