webService+Spring基本配置

一、WebService的介绍

Web Service是一种跨编程语言和跨操作系统平台的远程调用技术。Web Services 平台是 XML + HTTP。HTTP 协议是最常用的因特网协议。XML 提供了一种可用于不同的平台和编程语言之间的语言。web service的三个关键元素1、SOAP (简易对象访问协议), 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。用于访问网络服务的协议。2、UDDI (通用描述、发现及整合),UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。3、WSDL (Web services 描述语言),是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。

二、WebService适用场景

(1)跨防火墙通信

  如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服 务器。在这种情况下,使用DCOM就不是那么简单,通常也不便于把客户端程序发布到数量如此庞大的每一个用户手中。传统的做法是,选择用浏览器作为客户 端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。如果中间层组件换成WebService的话, 就可以从用户界面直接调用中间层组件。从大多数人的经验来看,在一个用户界面和中间层有较多交互的应用程序中,使用WebService这种结构,可以节 省花在用户界面编程上20%的开发时间。

(2)应用程序集成

  企业级的应用程序开发者都知道,企业里经常都要把用不同语言写成的、在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发力量。应用程序经常 需要从运行在IBM主机上的程序中获取数据;或者把数据发送到主机或UNIX应用程序中去。即使在同一个平台上,不同软件厂商生产的各种软件也常常需要集 成起来。通过WebService,可以很容易的集成不同结构的应用程序。

(3)B2B集成

  用WebService集成应用程序,可以使公司内部的商务处理更加自动化。但当交易跨越供应商和客户、突破公司的界限时会怎么样呢?跨公司的商务交易集成通常叫做B2B集成。WebService是B2B集成成功的关键。通过WebService,公司可以把关键的商务应用“暴露”给指定的供应商和客户。例如,把电子下单系统和电子发票系统“暴露”出来,客户就可以以电子的方式发送订单,供应商则可以以电子的方式发送原料采购发票。当然,这并不是一个 新的概念,EDI(电子文档交换)早就是这样了。但是,WebService的实现要比EDI简单得多,而且WebService运行在Internet 上,在世界任何地方都可轻易实现,其运行成本就相对较低。不过,WebService并不像EDI那样,是文档交换或B2B集成的完整解决方案。 WebService只是B2B集成的一个关键部分,还需要许多其它的部分才能实现集成。

  用WebService来实现B2B集成的最大好处在于可以轻易实现互操作性。只要把商务逻辑“暴露”出来,成为WebService,就可以让任何指定 的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么开发语言。这样就大大减少了花在B2B集成上的时间和成本,让许多原本无法承受 EDI的中小企业也能实现B2B集成。

(4)软件和数据重用

      软件重用是一个很大的主题,重用的形式很多,重用的程度有大有小。最基本的形式是源代码模块或者类一级的重用,一种形式是二进制形式的组件重用。采用 WebService应用程序可以用标准的方法把功能和数据“暴露”出来,供其它应用程序使用,达到业务级重用。

三、WebService的常用框架

1、JWS是Java语言对WebService服务的一种实现,用来开发和发布服务。而从服务本身的角度来看JWS服务是没有语言界限的。但是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径。

2、Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不但能制作和发布WebService,而且可以生成Java和其他语言版WebService客户端和服务端代码。这是它的优势所在。但是,这也不可避免的导致了Axis2的复杂性,使用过的开发者都知道,它所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。但是如果你要开发Java之外别的语言客户端,Axis2提供的丰富工具将是你不二的选择。

3、XFire是一个高性能的WebService框架,在Java6之前,它的知名度甚至超过了Apache的Axis2,XFire的优点是开发方便,与现有的Web整合很好,可以融为一体,并且开发也很方便。但是对Java之外的语言,没有提供相关的代码工具。XFire后来被Apache收购了,原因是它太优秀了,收购后,随着Java6 JWS的兴起,开源的WebService引擎已经不再被看好,渐渐的都败落了。

4、CXF是Apache旗下一个重磅的SOA简易框架,它实现了ESB(企业服务总线)。CXF来自于XFire项目,经过改造后形成的,就像目前的Struts2来自WebWork一样。可以看出XFire的命运会和WebWork的命运一样,最终会淡出人们的视线。CXF不但是一个优秀的Web Services / SOAP / WSDL 引擎,也是一个不错的ESB总线,为SOA的实施提供了一种选择方案,当然他不是最好的,它仅仅实现了SOA架构的一部分。

如果需要多语言的支持,选择AXIS2。如果需要实现侧重JAVA并希望和Spring集成,CXF就是更好的选择,特别是把你的Web Service嵌入其他的程序中。

四、WebService+Spring(cxf)

(1)服务端

1、配置文件

a、.web.xml文件中配置CXFServlet

<servlet>
	    <servlet-name>CXFService</servlet-name>
	    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
	    <load-on-startup>1</load-on-startup> 
	</servlet>
	<servlet-mapping>
	    <servlet-name>CXFService</servlet-name>
	    <url-pattern>/webservice/*</url-pattern>
	</servlet-mapping>

b、在applicationContext-services.xml文件中配置webservice

<import resource="classpath:META-INF/cxf/cxf.xml"/>
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
	<jaxws:server id="HZWQService" serviceClass="com.topscomm.webservice.service.IHuWaiAmiInterface" address="/hzwq">
		<jaxws:serviceBean>
			<ref bean="huWaiAmiInterface"/>
		</jaxws:serviceBean>
   </jaxws:server>

c、接口函数的配置

在要发布的类上加上@WebService的注解

对于该类中的非静态函数默认都会被发布出来

在每个函数的参数上可以添加一些注解,便于可以在生成的wsdl中了解每一个函数的参数是什么含义。

还有其他的一些常用注解http://yufenfei.iteye.com/blog/1685249

d、按照上述的配置结束后,启动项目就可以在浏览器中访问到ws生成的wsdl

访问路径为:项目的访问路径/web.xml中配置的url-pattern/address的配置名?wsdl

示例项目的访问路径http://127.0.0.1:8080/tcmr-hzwq/webservice/hzwq?wsdl

当可以看到如下的界面时就证明webservice服务端发布成功了。

(2)客户端

1、通过wsdl文件生成客户端代码

(1)方法一:使用jdk的wsimport生成

wsimport -keep -d D:\temp\d -s D:\temp\s -p com.map -verbose wsdl的文件路径

常用的几个关键字含义(也可以输入wsimport -help查看)

-keep:是否生成java源文件

-d:指定.class文件的输出目录

-s:指定.java文件的输出目录

-p:定义生成类的包名,不定义的话有默认包名

-verbose:在控制台显示输出信息

-b:指定jaxws/jaxb绑定文件或额外的schemas

-extension:使用扩展来支持SOAP1.2

(2)方法二:使用myeclipse生成

a.在项目上右键选择new-->web service client,然后选择要生成的framework

b.next

c.点击finsh即可,可以在选择的包下生成客户端的代码

2、在spring中配置ws的客户端

在spring的配置文件中将客户端进行配置

serviceClass:指的就是刚才生成代码中各个接口的定义的那个接口类

address:指的是访问ws服务端的路径

3、配置结束后就和正常的service层开发类似。

五、测试工具SoapUI

soapUI是一款用来进行检查、调用、实现Web Service的功能/负载/符合性测试的工具,该工具还可以进行很多关于webservice的测试。

1、客户端的模拟工具

a、在soapUI中新建soap项目

b、创建结束后,左侧目录中会展示将所有的接口

选择需要测试的接口,双击打开该接口的工作窗口。

c.如下图几位该试验的工作窗口,左侧为请求参数区,右侧为响应参数区

参数需要写在<![CDATA[...]]>中,不然会解析出错。

2、服务端的模拟工具

a.按照客户端的方式生成项目,然后如图选择soap mock service

b、选择要生成测试的接口即可。

c、然后mock测试的项目,如图选择设置图标,配置好该服务的访问路径,名称,端口等信息

d、和客户端操作相同,选择某个接口,然后即可通过程序对该服务进行访问,进行ws客户端的测试。

参考文档:

http://www.w3school.com.cn/webservices/index.asp

https://www.cnblogs.com/xiaohouzai/p/7282811.html

https://www.cnblogs.com/zhuyiqizhi/p/6045638.html

https://www.cnblogs.com/bigbang92/p/webservice_cxf_spring.html

https://blog.csdn.net/russ44/article/details/52230355

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值