cxf在服务器定义input拦截器功能

1、定义一个自定义的拦截器

public class HelloWorldService {

public static void main(String[] args) {
  HelloWorld hw = new HelloWorldImpl();
  EndpointImpl ep = (EndpointImpl)Endpoint.publish("http://192.168.123.47/ws", hw);
  ep.getInInterceptors().add(new AuthInterceptor());
  System.out.println("web service服务启动成功");
}
}

2、自定义拦截器

package cn.xjs.util;

import java.util.List;

import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.headers.Header;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class AuthInterceptor extends AbstractPhaseInterceptor<SoapMessage> {

  public AuthInterceptor() {
    super(Phase.PRE_INVOKE);
  }

  @Override
  public void handleMessage(SoapMessage mes) throws Fault {
    List<Header> headers = mes.getHeaders();
    if(headers==null || headers.size()<1) {
      throw new Fault(new Exception("没有请求header头信息"));
    }

    Header header = headers.get(0);
    Element ele =(Element)header.getObject();

    NodeList userIds = ele.getElementsByTagName("userId");
    NodeList passList = ele.getElementsByTagName("pass");

    if(userIds.getLength()!=1 ) {
      throw new Fault(new Exception("用户名不对"));
    }
    if(passList.getLength()!=1 ) {
      throw new Fault(new Exception("密码不对"));
    }

    String userId = userIds.item(0).getTextContent();
    String pass= passList.item(0).getTextContent();
    //....
  }
}

原文地址:https://www.cnblogs.com/fengfengshaonian/p/8641814.html

时间: 2024-10-10 07:24:13

cxf在服务器定义input拦截器功能的相关文章

【SSH三大框架】Struts2基础第六篇:自定义拦截器功能

在做web项目的时候肯定需要做登陆验证等权限的管理,如果不经过登陆就要使用相应的权限是不可以的.所以需要用到拦截器,拦截器的功能在struts2中已经集成,当然也可以在Spring中使用,这就会在后来写Spring博客的时候再写了. 接下来,我们做一个登陆验证,未登陆不能够访问一些方法: 首先,我们创建一个web项目,并且配置一些Struts2的jar包和web.xml文件,这两个就不多说了. 我们首先写一个登陆获得session的界面:index.jsp <%@ page language=&qu

spring mvc +cookie+拦截器功能 实现系统自动登陆

先看看我遇到的问题: @ResponseBody @RequestMapping("/logout") public Json logout(HttpSession session,HttpServletRequest request,HttpServletResponse response) { Json j = new Json(); if (session != null) { // session.invalidate(); session.removeAttribute(&q

Spring Aop 实现拦截器功能之基础 - 001

环绕通知用 @Around  注解来声明 可以决定这个方法在什么时候执行,如何执行,甚至是否执行 通知的第一个参数必须是 ProceedingJoinPoint 类型 如下 @Pointcut("execution(* com.sxb.web.v2.wh.unittest2.aop.PersonServiceBean.save(..)) || execution(* com.sxb.web.v2.wh.unittest2.aop.PersonServiceBean.update(..))&quo

MyEclippse中使用struts-default.xml中定义的拦截器(timmer,logger)

环境:MyEclipse 2015 Stable 2.0:struts2-core-2.3.16.1.jar等 struts.xml <struts> <package name="p1" namespace="/" extends="struts-default"> <action name="m1" class="org.ah.s2.C1" method="m1&

WebService框架CXF实战一自定义拦截器(五)

CXF已经内置了一些拦截器,这些拦截器大部分默认添加到拦截器链中,有些拦截器也可以手动添加,如手动添加CXF提供的日志拦截器.也可以自定义拦截器,CXF中实现自定义拦截器很简单,只要继承AbstractPhaseInterceptor或者AbstractPhaseInterceptor的子类(如AbstractSoapInterceptor)即可. 自定义权限认证拦截器 权限认证拦截器处理SOAPHeader中的认证信息,客户端在发起请求时在SOAPHeader中添加认证信息,服务端在接收到请求

Struts2(XWork)拦截器的功能介绍:

  拦截器 名字 说明 Alias Interceptor alias 在不同请求之间将请求参数在不同名字件转换,请求内容不变 Chaining Interceptor chain 让前一个Action的属性可以被后一个Action访问,现在和chain类型的result(<result type="chain">)结合使用. Checkbox Interceptor checkbox 添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,

Struts2自己定义拦截器实例—登陆权限验证

版本号:struts2.1.6 此实例实现功能:用户须要指定username登陆,登陆成功进入对应页面运行操作,否则返回到登陆页面进行登陆,当直接訪问操作页面(登陆后才干訪问的页面)时则不同意,须返回登陆页面. 代码例如以下: 一.页面 login.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUB

Struts2他们拦截器实例定义—登陆权限验证

版本号:struts2.1.6 这种情况下实现功能:用户需要指定username登陆,进入相应的页面运行成功登陆作战,否则,它返回到着陆的登录页面,当直接进入操作页面(登陆访问页面后的能力)如果不同意,必须返回到登陆页面. 码,如以下: 一.页面 login.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTM

WebService框架CXF实战一拦截器Interceptor(四)

拦截器(Interceptor)是CXF功能最主要的扩展点,可以在不对核心模块进行修改的情况下,动态添加很多功能.拦截器和JAX-WS Handler.Filter的功能类似,当服务被调用时,就会创建一个拦截器链(Interceptor Chain),拦截器链在服务输入(IN)或输出(OUT)阶段实现附加功能. 拦截器可以在客户端,也可以在服务端添加.当客户端发起一个WebService请求时,在客户端会创建输出拦截器链,服务端接收到客户端的后,会创建输入拦截器链.当服务端返回响应消息时,响应消