文档章节

java1234 webservice 第6 课 cfx与spring整合_自定义拦截器_客户端如

 小南风
发布于 2016/08/02 15:33
字数 564
阅读 60
收藏 0

一.只需要在springmvc.xml中添加

	<!-- 定义服务提供者 ,也就是定义webservice服务地址! -->
	<!--implementor写入注册的bean  address 访问的地址!  -->
	<jaxws:endpoint implementor="#helloWorld1" address="/HelloWorld">
			<!-- 添加in拦截器 -->
		    <jaxws:inInterceptors>
		         <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
		         <!-- 自定义拦截器 -->
		         <bean class="com.java1234.interceptor.MyInterceptor"/>
		    </jaxws:inInterceptors>
		    <!-- 添加out拦截器 -->
		    <jaxws:outInterceptors>
		         <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
		    </jaxws:outInterceptors>
	 </jaxws:endpoint>

二.访问服务器:

1.生成文件: 运行命令:F:\apache-cxf-3.1.5\bin\wsdl2java  http://127.0.0.1:8080/WS_Spring_CXF/webservice/HelloWorld?wsdl

2. 新建maven项目,项目结构如下

pox.xml文件

 <dependencies>  
    	<dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-core</artifactId>
		<version>3.1.5</version>
	</dependency>

  	<dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-rt-frontend-jaxws</artifactId>
		<version>3.1.5</version>
	</dependency>
	
	<dependency>
		<groupId>org.apache.cxf</groupId>
		<artifactId>cxf-rt-transports-http-jetty</artifactId>
		<version>3.1.5</version>
	</dependency>
  </dependencies>

client.java方法

package com.java1234.webservice;

import java.util.List;

import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;

import com.java1234.interceptor.AddHeaderInterceptor;
import com.java1234.webservice.impl.HelloWorldImplService;

public class Client {
	
	 public static void main(String[] args) {
		 
		 //这里web下的服务器和普通main发布的服务器 生成的文件不同
		 HelloWorldImplService service=new HelloWorldImplService();
		 HelloWorld helloWorld=service.getHelloWorldImplPort();
		//调用的类也有区别

		org.apache.cxf.endpoint.Client client= ClientProxy.getClient(helloWorld);
		client.getOutInterceptors().add(new AddHeaderInterceptor("java1234","123456")); // 添加自定义拦截器		
		client.getInInterceptors().add(new LoggingInInterceptor());//添加
		client.getOutInterceptors().add(new LoggingOutInterceptor());
		

		
		/*
		 *数据只能传输List<T>,不能传输map,所以map的key放入T中,便可以轻松传输! 
		 */
		MyRoleArray arry = helloWorld.getRoles();
		 List<MyRole>   roleList= arry.item;
		
		 for(int i=0; i<roleList.size();i++){
			 
			 MyRole my=roleList.get(i);
			 System.out.println(my.key+":");
			 for(Role r:my.value){
				 System.out.println(r.getId()+","+r.getRoleName());
			 }
			 System.out.println("========================");
		 }
		 
		
		
		
	}

}

 

运行结果:

八月 02, 2016 3:22:08 下午 org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean buildServiceFromWSDL
信息: Creating Service {http://impl.webservice.java1234.com/}HelloWorldImplService from WSDL: http://127.0.0.1:8080/WS_Spring_CXF/webservice/HelloWorld?wsdl
八月 02, 2016 3:22:08 下午 org.apache.cxf.services.HelloWorldImplService.HelloWorldImplPort.HelloWorld
信息: Outbound Message
---------------------------
ID: 1
Address: http://127.0.0.1:8080/WS_Spring_CXF/webservice/HelloWorld
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml
Headers: {Accept=[*/*], SOAPAction=[""]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><authHeader><userName>java1234</userName><password>123456</password></authHeader></soap:Header><soap:Body><ns2:getRoles xmlns:ns2="http://webservice.java1234.com/"/></soap:Body></soap:Envelope>
--------------------------------------
八月 02, 2016 3:22:08 下午 org.apache.cxf.services.HelloWorldImplService.HelloWorldImplPort.HelloWorld
信息: Inbound Message
----------------------------
ID: 1
Response-Code: 200
Encoding: UTF-8
Content-Type: text/xml;charset=UTF-8
Headers: {Content-Length=[443], content-type=[text/xml;charset=UTF-8], Date=[Tue, 02 Aug 2016 07:22:08 GMT], Server=[Apache-Coyote/1.1]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:getRolesResponse xmlns:ns2="http://webservice.java1234.com/"><return><item><key>jack</key><value><id>3</id><roleName>程序员</roleName></value></item><item><key>java1234</key><value><id>1</id><roleName>技术总监</roleName></value><value><id>2</id><roleName>架构师</roleName></value></item></return></ns2:getRolesResponse></soap:Body></soap:Envelope>
--------------------------------------
jack:
3,程序员
========================
java1234:
1,技术总监
2,架构师
========================

 

 

本文转载自:

粉丝 4
博文 162
码字总数 59007
作品 0
私信 提问
【CXF】- Spring 整合 webservice CXF

webservice服务端 项目代码层次结构: ①:web.xml:CXFServlet/Spring配置文件信息 ②:spring整合CXF框架配置:beans.xml ③:webservice服务接口/服务类/拦截器/POJO 客户端代码层次结构:...

ZeroneLove
03/02
7
0
SpringBoot | 第三十四章:CXF构建WebService服务

前言 上一章节,讲解了如何使用构建服务。其实,创建的方式有很多的,今天来看看如何使用来构建及调用服务。 一点知识 何为Apache-CXF 是一个开源的框架,帮助您利用编程 API 来构建和开发S...

oKong
2018/11/12
219
0
仿照源码,手写一个自定义 Spring MVC 框架

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/GitChat/article/details/97947618 前言 上节课我们学习了 Spring M...

GitChat技术杂谈
07/31
0
0
极速上手进阶大神的 5 门 SpringBoot 课程

SpringBoot 因其大大简化了配置。可快速启动一个应用的开发环境,把时间和精力更多的投入到实现业务需求上去。成为了Java 服务器端近几年特别火爆的框架。 如此火爆的技术,怎能不抢先了解一...

实验楼
08/16
0
0
基于SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系

2016/10/07 Spring admin 5 条评论 1587 views 一 简介 (1)过滤器: 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时...

Airship
2017/11/03
86
0

没有更多内容

加载失败,请刷新页面

加载更多

【0911】linux软件包安装和卸载

【0911】linux软件包安装和卸载 一、安装软件包的三种方法 1、rpm工具:与win中的exe安装包类似,红帽子公司包管理系统 2、yum工具:属于一种用python开发的工具,支持自动的安装依赖的包 3、...

飞翔的竹蜻蜓
28分钟前
3
0
【外行学IT】手机网页自适应之rem和viewport

在写手机网页时,对于像素的问题会非常困惑,初学者很多时候会因为那么一个小点的问题解决不了,或者无法理解透彻就放弃了学习。 我在学习写手机网页时也困惑了许久,出现过下面的问题: 图片...

前端老手
39分钟前
5
0
三、Java设计模式之单一职责原则

定义:不要存在多于一个导致类变更的原因。 一个类、接口、方法只负责一项职责 优点:降低类的复杂度、提高类的可读性,提高系统的可维护性、降低变更引起的风险

东风破2019
46分钟前
4
0
搭建高可用MongoDB集群(分片)

搭建高可用MongoDB集群(分片) KaliArch关注1人评论28269人阅读2017-12-04 21:57:41 MongoDB基础请参考:https://blog.51cto.com/kaliarch/2044423 MongoDB(replica set)请参考:https:/...

linjin200
今天
6
0
Pandas DataFrame创建方法大全

Pandas是Python的数据分析利器,DataFrame是Pandas进行数据分析的基本结构,可以把DataFrame视为一个二维数据表,每一行都表示一个数据记录。本文将介绍创建Pandas DataFrame的6种方法。 创建...

汇智网教程
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部