Webservice实践(六)CXF拦截器简介

cxf WebService整理 项目中需要用到CXF做WS处理,花点时间对其有个简单认识,主要是在安全认证以及日志记录和异常处理这块有要求控制。 阅读详情

             拦截器是Cxf的基础,Cxf中很多的功能都是由内置的拦截器来实现的,拦截器在Cxf中由Interceptor表示。拦截器的作用类似axis2中handle。Cxf的拦截器包括入拦截器和出拦截器,所有的入拦截器或出拦截器构成了一个拦截器链,它们可以作用在Server端也可以作用在Client端。当需要使用拦截器链处理消息的时候,Cxf会确保对应的消息被拦截器链里面的每一个拦截器都执行一遍。拦截器链在Cxf中由InterceptorChain接口表示,org.apache.cxf.phase.PhaseInterceptorChain类的public synchronized boolean doIntercept(Message message)方法,它是拦截器链拦截Message的实现。当客户端发送一个请求到服务端时会经过客户端的出拦截器和服务端的入拦截器;当服务端对客户端的请求进行响应时对应的响应消息会经过服务端的出拦截器和客户端的入拦截器。

下面简单介绍一下服务端拦截器,在上一篇工程基础上进行如下修改:

在服务端应用里面,增加一个类,这个类继承自AbstractPhaseInterceptor。

package com.study.cxfws.msginterceptor;

import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;

public class WsInterceptor extends AbstractPhaseInterceptor<Message>{  
  
    public WsInterceptor(String phase) {  
        super(phase);  
    }  
  
    public void handleMessage(Message message) throws Fault {  
    	
        System.out.println("+++ into Interceptor+++");  
        System.out.println(message);  
        if(message.getDestination()!=null){  
            System.out.println(message.getId()+"#"+message.getDestination().getMessageObserver());            
        }  
        if(message.getExchange()!=null){  
            System.out.println(message.getExchange().getInMessage()+"#"+message.getExchange().getInFaultMessage());  
            System.out.println(message.getExchange().getOutMessage()+"#"+message.getExchange().getOutFaultMessage());  
        }  
        System.out.println("+++ Out Interceptor+++");  
    }  
  
}  
修改服务发布,注意下面标注红色的地方

package com.study.cxfws.impl;

import javax.jws.WebService;

import com.study.cxfws.StudentWs;
import com.study.cxfws.msginterceptor.WsInterceptor;
import com.study.dao.StudentDAO;
import com.study.dao.impl.StudentDAOImpl;

import org.apache.cxf.endpoint.Server;  
import org.apache.cxf.jaxws.JaxWsServerFactoryBean; 
import org.apache.cxf.phase.Phase;

@WebService  
public class StudentWsImpl implements  StudentWs {
	
	//Student的dao 类,负责处理student 实体类的操作
	private StudentDAO studentDAO;
	
	public  StudentWsImpl(){
		studentDAO = new StudentDAOImpl();
	}

	public boolean addStudent(String name, String sex, String birthday) {
		// 调用studentDAO.addStudent 方法入库
		System.out.println("Now put student into DB!");
		studentDAO.addStudent(name, sex, birthday);
		return true;

	}

	public String queryStudent(String studentName) {
		System.out.println("StudentWsImpl queryStudent->"+studentName);
		Object tmp = studentDAO.queryStudent(studentName);
		if (tmp== null) {
			return "null";
		} else {
			return tmp.toString();
		}

	}

	public static void main(String[] args) {


                System.out.println("web service start");
	        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();  
	        //这里必须传入class,不能是接口,否则客户端会报异常 Could not instantiate service class ... because it is an interface
	        factory.setServiceClass(StudentWsImpl.class);  
	        factory.setAddress("http://localhost:8080/StudentWs");  
	          
	        factory.getInInterceptors().add(new WsInterceptor(Phase.RECEIVE));  
	        factory.getOutInterceptors().add(new WsInterceptor(Phase.SEND));  
	        Server server = factory.create();  
	        server.start();  
	        System.out.println("web service started");
	
	}


}

启动服务后,当客户端调用服务端接口的时候,我们可以看到拦截器发挥作用,日志如下:

web service start
二月 03, 2017 8:21:02 下午 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
INFO: Creating Service {http://impl.cxfws.study.com/}StudentWsImplService from class com.study.cxfws.StudentWs
二月 03, 2017 8:21:03 下午 org.apache.cxf.endpoint.ServerImpl initDestination
INFO: Setting the server's publish address to be http://localhost:8080/StudentWs
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
web service started
+++ into Interceptor+++
{org.apache.cxf.message.Message.PROTOCOL_HEADERS={Accept=[*/*], Cache-Control=[no-cache], connection=[keep-alive], Content-Length=[238], content-type=[text/xml; charset=UTF-8], Host=[localhost:8080], Pragma=[no-cache], SOAPAction=[""], User-Agent=[Apache CXF 2.7.6]}, HTTP_CONTEXT_MATCH_STRATEGY=stem, org.apache.cxf.request.url=http://localhost:8080/StudentWs, org.apache.cxf.request.uri=/StudentWs, HTTP.REQUEST=(POST /StudentWs)@1264815 org.eclipse.jetty.server.Request@134caf, HTTP.CONFIG=null, org.apache.cxf.transport.https.CertConstraints=null, Accept=*/*, org.apache.cxf.message.Message.PATH_INFO=/StudentWs, org.apache.cxf.message.Message.BASE_PATH=/StudentWs, org.apache.cxf.continuations.ContinuationProvider=org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProvider@730f7532, org.apache.cxf.message.Message.IN_INTERCEPTORS=[org.apache.cxf.transport.https.CertConstraintsInterceptor@7bd760a1], org.apache.cxf.binding.soap.SoapVersion=org.apache.cxf.binding.soap.Soap11@7909298b, org.apache.cxf.message.Message.ENCODING=UTF-8, org.apache.cxf.message.Message.QUERY_STRING=null, HTTP.RESPONSE=HTTP/1.1 200 

, org.apache.cxf.security.SecurityContext=org.apache.cxf.transport.http.AbstractHTTPDestination$2@4886a2c1, org.apache.cxf.request.method=POST, org.apache.cxf.async.post.response.dispatch=true, org.apache.cxf.configuration.security.AuthorizationPolicy=null, org.apache.cxf.message.MessageFIXED_PARAMETER_ORDER=false, org.apache.cxf.transport.Destination=org.apache.cxf.transport.http_jetty.JettyHTTPDestination@7f275219, http.base.path=http://localhost:8080, Content-Type=text/xml; charset=UTF-8, HTTP.CONTEXT=ServletContext@o.e.j.s.h.ContextHandler{,null}}
null#org.apache.cxf.transport.ChainInitiationObserver@edebef9
{org.apache.cxf.message.Message.PROTOCOL_HEADERS={Accept=[*/*], Cache-Control=[no-cache], connection=[keep-alive], Content-Length=[238], content-type=[text/xml; charset=UTF-8], Host=[localhost:8080], Pragma=[no-cache], SOAPAction=[""], User-Agent=[Apache CXF 2.7.6]}, HTTP_CONTEXT_MATCH_STRATEGY=stem, org.apache.cxf.request.url=http://localhost:8080/StudentWs, org.apache.cxf.request.uri=/StudentWs, HTTP.REQUEST=(POST /StudentWs)@1264815 org.eclipse.jetty.server.Request@134caf, HTTP.CONFIG=null, org.apache.cxf.transport.https.CertConstraints=null, Accept=*/*, org.apache.cxf.message.Message.PATH_INFO=/StudentWs, org.apache.cxf.message.Message.BASE_PATH=/StudentWs, org.apache.cxf.continuations.ContinuationProvider=org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProvider@730f7532, org.apache.cxf.message.Message.IN_INTERCEPTORS=[org.apache.cxf.transport.https.CertConstraintsInterceptor@7bd760a1], org.apache.cxf.binding.soap.SoapVersion=org.apache.cxf.binding.soap.Soap11@7909298b, org.apache.cxf.message.Message.ENCODING=UTF-8, org.apache.cxf.message.Message.QUERY_STRING=null, HTTP.RESPONSE=HTTP/1.1 200 

, org.apache.cxf.security.SecurityContext=org.apache.cxf.transport.http.AbstractHTTPDestination$2@4886a2c1, org.apache.cxf.request.method=POST, org.apache.cxf.async.post.response.dispatch=true, org.apache.cxf.configuration.security.AuthorizationPolicy=null, org.apache.cxf.message.MessageFIXED_PARAMETER_ORDER=false, org.apache.cxf.transport.Destination=org.apache.cxf.transport.http_jetty.JettyHTTPDestination@7f275219, http.base.path=http://localhost:8080, Content-Type=text/xml; charset=UTF-8, HTTP.CONTEXT=ServletContext@o.e.j.s.h.ContextHandler{,null}}#null
null#null
+++ Out Interceptor+++
Now put student into DB!
addStudent begin!
Name=Tom;Sex=male;Birthday=19780618
+++ into Interceptor+++
{javax.xml.ws.wsdl.port={http://impl.cxfws.study.com/}StudentWsImplPort, org.apache.cxf.ws.policy.EffectivePolicy=org.apache.cxf.ws.policy.EffectivePolicyImpl@6a4700ae, org.apache.cxf.service.model.MessageInfo=[MessageInfo OUTPUT: {http://cxfws.study.com/}addStudentResponse], http.headers.copied=true, wrote.envelope.start=true, org.apache.cxf.message.Message.PROTOCOL_HEADERS={}, javax.xml.ws.wsdl.service={http://impl.cxfws.study.com/}StudentWsImplService, org.apache.cxf.message.Message.ENCODING=UTF-8, org.apache.cxf.binding.soap.SoapVersion=org.apache.cxf.binding.soap.Soap11@7909298b, HTTP.RESPONSE=HTTP/1.1 200 
Content-Type: text/xml;charset=UTF-8

, javax.xml.ws.wsdl.interface={http://cxfws.study.com/}StudentWs, org.apache.cxf.mime.headers={}, javax.xml.ws.wsdl.operation={http://cxfws.study.com/}addStudent, javax.xml.ws.wsdl.description=http://localhost:8080/StudentWs?wsdl, org.apache.cxf.service.model.BindingMessageInfo=org.apache.cxf.service.model.BindingMessageInfo@5b7dd604, Content-Type=text/xml, org.apache.cxf.headers.Header.list=[]}
{javax.xml.ws.wsdl.port={http://impl.cxfws.study.com/}StudentWsImplPort, org.apache.cxf.service.model.MessageInfo=[MessageInfo INPUT: {http://cxfws.study.com/}addStudent], org.apache.cxf.message.Message.PROTOCOL_HEADERS={Accept=[*/*], Cache-Control=[no-cache], connection=[keep-alive], Content-Length=[238], content-type=[text/xml; charset=UTF-8], Host=[localhost:8080], Pragma=[no-cache], SOAPAction=[""], User-Agent=[Apache CXF 2.7.6]}, HTTP_CONTEXT_MATCH_STRATEGY=stem, org.apache.cxf.request.url=http://localhost:8080/StudentWs, javax.xml.ws.wsdl.interface={http://cxfws.study.com/}StudentWs, org.apache.cxf.request.uri=/StudentWs, HTTP.REQUEST=(POST /StudentWs)@1264815 org.eclipse.jetty.server.Request@134caf, HTTP.CONFIG=null, org.apache.cxf.transport.https.CertConstraints=null, Accept=*/*, org.apache.cxf.headers.Header.list=[], org.apache.cxf.message.Message.PATH_INFO=/StudentWs, org.apache.cxf.message.Message.BASE_PATH=/StudentWs, org.apache.cxf.continuations.ContinuationProvider=org.apache.cxf.transport.http_jetty.continuations.JettyContinuationProvider@730f7532, javax.xml.ws.wsdl.service={http://impl.cxfws.study.com/}StudentWsImplService, org.apache.cxf.message.Message.IN_INTERCEPTORS=[org.apache.cxf.transport.https.CertConstraintsInterceptor@7bd760a1], org.apache.cxf.binding.soap.SoapVersion=org.apache.cxf.binding.soap.Soap11@7909298b, org.apache.cxf.message.Message.ENCODING=UTF-8, org.apache.cxf.message.Message.QUERY_STRING=null, HTTP.RESPONSE=HTTP/1.1 200 
Content-Type: text/xml;charset=UTF-8

, org.apache.cxf.security.SecurityContext=org.apache.cxf.transport.http.AbstractHTTPDestination$2@4886a2c1, org.apache.cxf.request.method=POST, org.apache.cxf.async.post.response.dispatch=true, org.apache.cxf.configuration.security.AuthorizationPolicy=null, javax.xml.ws.wsdl.operation={http://cxfws.study.com/}addStudent, org.apache.cxf.message.MessageFIXED_PARAMETER_ORDER=false, org.apache.cxf.transport.Destination=org.apache.cxf.transport.http_jetty.JettyHTTPDestination@7f275219, org.apache.cxf.jaxws.context.WrappedMessageContext.SCOPES={}, javax.xml.ws.wsdl.description=http://localhost:8080/StudentWs?wsdl, http.base.path=http://localhost:8080, Content-Type=text/xml; charset=UTF-8, HTTP.CONTEXT=ServletContext@o.e.j.s.h.ContextHandler{,null}}#null
{javax.xml.ws.wsdl.port={http://impl.cxfws.study.com/}StudentWsImplPort, org.apache.cxf.ws.policy.EffectivePolicy=org.apache.cxf.ws.policy.EffectivePolicyImpl@6a4700ae, org.apache.cxf.service.model.MessageInfo=[MessageInfo OUTPUT: {http://cxfws.study.com/}addStudentResponse], http.headers.copied=true, wrote.envelope.start=true, org.apache.cxf.message.Message.PROTOCOL_HEADERS={}, javax.xml.ws.wsdl.service={http://impl.cxfws.study.com/}StudentWsImplService, org.apache.cxf.message.Message.ENCODING=UTF-8, org.apache.cxf.binding.soap.SoapVersion=org.apache.cxf.binding.soap.Soap11@7909298b, HTTP.RESPONSE=HTTP/1.1 200 
Content-Type: text/xml;charset=UTF-8

, javax.xml.ws.wsdl.interface={http://cxfws.study.com/}StudentWs, org.apache.cxf.mime.headers={}, javax.xml.ws.wsdl.operation={http://cxfws.study.com/}addStudent, javax.xml.ws.wsdl.description=http://localhost:8080/StudentWs?wsdl, org.apache.cxf.service.model.BindingMessageInfo=org.apache.cxf.service.model.BindingMessageInfo@5b7dd604, Content-Type=text/xml, org.apache.cxf.headers.Header.list=[]}#null
+++ Out Interceptor+++

关于拦截器参考了:

http://blog.youkuaiyun.com/wangnetkang/article/details/7799275

http://elim.iteye.com/blog/2248620


已有ssh项目中加入webservice(CXF) 已有ssh项目编写webService接口 阅读详情

相关推荐

CXF与Spring整合中添加拦截器实现WebService权限控制实战

定义拦截器Bean涉及创建一个具体的拦截器实例,并使用@Bean注解将其暴露给Spring容器。@Bean为了实现自定义拦截器,首先要深入理解两个关键接口:和。Fault接口主要涉及在处理消息过程中出现的错误。而则是控制拦截器在Web服务生命周期中不同阶段介入的关键。接口包含多个方法,但最为关键的是方法,它允许你编写拦截器逻辑。自定义拦截器通常需要根据消息的类型(请求或响应)来处理逻辑。例如,你可能需要在消息发送前验证权限,或在消息处理后记录日志。

weixin_36289742的博客 1029

Spring boot WebService 使用快速入门、拦截器,接口调试工具

目录 环境说明 服务端 导入 jar 包 源码展示 配置文件 浏览器访问测试 客户端 wsdl2java 生成代理类 源码内容 浏览器访问测试 配置拦截器 服务端 客户端 访问测试 环境说明 1、本文使用Spring4.3.10 集成 Apache CXF 3.3 。 2、亲测 Java JDK 1.8 + Tomcat 9 集成成功(Tomcat 8 时集成失...

蚩尤后裔-汪茂雄 7333

LabVIEW+数据库应用系列保姆级教程,第一篇数据库连接

目录LabVIEW连接数据库的方法连接MySQL连接Oracle,SQL Server,Access等 LabVIEW连接数据库的方法 1、创建udl(Universal Data Link)是通用数据连接文件。界面操作,简单快捷。 2、编写连接字符串。需要熟悉连接字符串的结构,容易出错。 3、其他… 本教程教你使用第1种方法,也是最简单、最常用的方法。 连接MySQL 1、在MySQL Installer内安装MySQL Connector/ODBC,建议安装32位(X86),如下图: 2、创建ODBC

wwplh5520370的博客 1万+

Cxf - 拦截器

一、Soap消息 二、添加拦截器 1、服务端

袭冷 1799

5G NR上行控制信道PUCCH

一、PUCCH概述 PUCCH用于承载上行控制信息,相比LTE,NR PUCCH支持5种不同的格式,按照时域上所占用的符号数量可以分为短格式和长格式两种,如下表所示,短格式占用1-2个符号,可以承载1-2bit信息,长格式占用4-14个符号,可承载大于2bit的信息。NR引入短格式PUCCH的目的是可以缩短HARQ-ACK反馈的时延,长格式仍然是考虑到持续时间长可以保证覆盖。 NR中,考虑到系...

一个关于5G NR的博客^^ 3万+

python 成语接龙-连接数据库

from xpinyin import Pinyin import pymysql while 1: conn = pymysql.connect( host='localhost', #本地连接 user='root', #数据库账户名 password='password', #数据库密码 db='dic',

Hero2902的博客 598

CXF实战之自定义拦截器(五)

CXF已经内置了一些拦截器,这些拦截器大部分默认添加到拦截器链中,有些拦截器也可以手动添加,如手动添加CXF提供的日志拦截器。也可以自定义拦截器,CXF中实现自定义拦截器很简单,只要继承AbstractPhaseInterceptor或者AbstractPhaseInterceptor的子类(如AbstractSoapInterceptor)即可。

达拉斯母牛 9158

全桥LLC谐振变换器设计与双环控制策略详解

LLC谐振变换器作为高频开关电源的核心拓扑,通过谐振腔实现软开关特性,显著提升转换效率(可达96%以上)。其工作原理基于谐振电感、电容的协同作用,当开关频率接近谐振点时实现ZVS/ZCS。在工业电源、电动汽车充电等场景中,电压电流双环控制策略通过引入电流内环和竞争仲裁机制,有效改善动态响应(实测负载跳变时电压跌落减少60%)。数字控制实现时需注意ADC采样同步和PWM更新时序,而谐振参数测量与温升管理则是工程实践的关键。

weixin_29189987的博客 255

基于CXF的webservice拦截器

CXF webservice 拦截器 定制报文格式

u014543166的博客 1359

Claude Code VSCode集成开发指南:AI编程助手完整配置

Claude Code与Visual Studio Code的深度集成为开发者提供了强大的AI编程支持。本文详细介绍Claude Code VSCode扩展的安装配置、功能特性和实际应用方法。通过完整的配置流程和代码示例,帮助开发者充分利用Claude AI的智能编程能力。文章涵盖从环境搭建到高级功能应用的完整指南,包括代码自动补全、智能重构、实时代码分析等核心功能的使用技巧,以及与现有开发工作流的整合方案。

2501_93058131的博客 5982

保姆级教程:ABAP 通过 HTTP POST 调用 OData 服务创建业务数据的具体例子

笔者之前的文章发布之后,有朋友在评论区留言,询问 ABAP 除了 Web Service 之外,是否也支持 HTTP 呢?ABAP 这么强大的语言,支持 HTTP 当然不在话下。网上有很多在 ABAP 系统基于 CL_HTTP_CLIENT 工具类,通过 HTTP 协议和第三方系统交互的代码例子。本文介绍笔者项目中一个实际例子,实现的是在 ABAP 系统 A 通过 HTTP 调用 OData 服务,在 ABAP 系统 B 创建业务数据的需求。下面我们按照这个套路来一步步实现。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 697

cxf拦截器,实现对接收到的报文和发送出去的报文格式自定义

看此篇文章之前可以看看我的这篇文章,有助于更好的理解webservice和这篇文章 http://blog.csdn.net/zhaofuqiangmycomm/article/details/78701566 1,配置文件 ?xmlversion="1.0"encoding="utf-8"?> <beansxmlns="http://www.spri...

zhaofuqiangmycomm的博客 8838

Python 爬虫实战:豆瓣电影海报批量获取(Top250 榜单 + 可视化展示)

在信息爆炸的时代,数据已成为决策的核心,而数据的获取是数据分析的第一步。本文将详细介绍如何利用 Python 爬虫获取豆瓣电影 Top250 榜单的海报,并对数据进行可视化展示,助你更好地了解电影市场的趋势和用户的喜好。

yansideyucsdn的博客 717

使用CXF开发WebService程序的总结(六):结合拦截器使用

1. 使用CXF提供的拦截器 拦截器在我看来分为两端两向,两端分为:客户端和服务端,两向(方向)分为:进(in)和出(out),即大致四类拦截器。 在这里利用cxf提供的 日志拦截器举例 1.1 在服务端的发布类中获取所有拦截器,在 in 和 out两个方向(即调用和返回的过程) 添加日志拦截器 package com.lonely.server.impl; im

独孤小标的博客 845

R语言中5种正态性检验的方法

统计学中的t检验和方差分析等方法的应用条件是样本都来自正态总体或近似正态总体,只有符合这个条件,才能用这些方法来检验各样本所属的总体参数的差异显著性。文本向大家介绍在R语言中检验正态性的几种方法: 1、Kolmogorov-Smirnov检验 K-S检验检验单一样本是否来自某一特定分布。比如检验一组数据是否为正态分布。它的检验方法是以样本数据的累积频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。K-S检验的原假设和备择假设为: H0:样本所来自的总体分布服从

Mrrunsen的博客 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【WebService框架-CXF】——WebService和CXF

在接下来的几篇博客中将对CXF的基础知识和简单应用进行总结。下面列出了要总结的内容。本篇文章集中介绍CXF的基础知识。 CXF博客总结目录WebService和CXF基础知识 CXF入门实例(编写客户端和服务端) CXF对Map等无法自动转化的类型的处理 CXF添加普通拦截器和自定义拦截器 CXF+Spring+自定义拦截器构建WebService服务端 CXF+Spring+Struts

To Begin,Begin   2403

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

spring boot-实现WebService(CXF实现)的拦截器(Interceptor)

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

牛奋lch 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【WebService框架-CXF】——CXF拦截器

背景   当一个服务发布之后,只要有服务地址,我们就可以建立客户端对服务进行调用。如果服务的提供者想要对可以调用服务的客户端进行限制,如:只有某些客户可以调用此服务。这时候就会用到拦截器,来进行权限控制。   明白了拦截器的应用场景,我们看看CXF的拦截器怎么用。 IN&OUT拦截器 从图中我们可以总结出,只要从一端发出消息时要进行拦截,就要使用OUT拦截器。如果要对接收的消息进行拦截

To Begin,Begin   1192

CXF拦截器

参考:http://cxf.apache.org/javadoc/latest/ https://www.cnblogs.com/cac2020/p/5975473.html https://blog.csdn.net/elim168/article/details/72356346 一、用途 CXF拦截器可以直接访问和修改sope消息,它可用于WS请求响应中的权限验证、日志记录,S...

qq_41630866的博客 1882

【WebService】CXF拦截器的设置以及自定义CXF拦截器

CXF的拦截器和以前学过的servlet的拦截器类似的,都是在开始或结束切入一段代码,执行一些逻辑之类的。我们可以在调用ws服务前设置拦截器,也可以在调用ws服务后设置拦截器,当然了,拦截器也可以添加多个,CXF中有自己内置的拦截器,先来写个简单CXF自带的拦截器实例熟悉一下在CXF中如何添加,然后再来自定义CXF拦截器。 CXF内置的拦截器设置 还是使用上一节的ws,在原来的基础上添加以下拦...

盐焗味的小星球的博客 957

【WebService开发】之使用CXF开发WebService

1.开发服务端 a) 下载CXF:apache-cxf-3.1.6 b) 把cxf的jar包加入到项目中,其它不需要改变(同JDK开发webservice一样),webservice服务端开发完成。 2.开发客户端 a) 加入环境变量path中,E:\apache-cxf-3.1.6\bin b) 在cmd命令下生成客户代码,命令为:wsdl2java url,该命令为cxf的bin目录

北风 957

WebService的CXF实现

WebService的CXF实现 Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成 。一种跨编程语言和跨操作系统平台的远程调用技术。 XML、SOAP和WSDL就是构成Web Service平台的三大技术。 Web Service采用Http协议来在客户端和服务端之间传输数据。WebService使用XML来封装数据,XML主要的优点在于它是跨平台的。 Web Service通过HTTP协议发送请求和接收结果时,发送的请求内容和

weixin_44773752的博客 1353

使用CXF发布的webservice服务并且忽略targetnamespace校验

场景:CXF发布的webservice的服务端一定会去校验targetnamespace,如果客户端没有携带targetnamespace则会报错,比如说我用的axis2客户端没有携带targetnamespace,那么就无法访问使用CXF发布的webservice服务了。 解决方案:发布CXF的webservice服务端时忽略掉targetnamespace的校验,即添加cxf的拦截器设置字段soap.force.doclit.bare为true CXF发布webservice服务: impo

qq_37549757的博客 4672

【WebService框架-CXF】——CXF+Spring+自定义拦截器构建WebService服务端

在传统的SSH项目中,我们可以添加一层Web Service。这样就可以允许任何平台,任何语言编写的程序来调用这些对外发布的服务。   在传统的SSH项目中添加WebService层的关键步骤为:如何把WebService的类添加到Spring容器中进行管理,如何发布服务。即如何在applicationContext.xml中进行配置。 步骤1.新建Java Web Project,引入C

To Begin,Begin   1807
上一篇: Webservice实践(五)基于CXF的服务端开发
下一篇: Webservice实践(七)CXF 与Spring结合+tomcat发布
虎纠卫
博客等级 码龄24年 440粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值