打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Web Service

      Web Service见名之意就是网络上的一些服务,解决的问题就是如何使用这些服务,因为软件的开发有各种各样的语言,利用JavaC#VB.NET,PHP等等,如何使这些语言编写的程序能够进行互通,彼此相互利用。Web Service就可以解决异构系统的通信的整合。


          首先看一下,和WebService一样能够解决异构系统的通信和整合的方案吧:


           1,通过XMLJSON,字符串进行多语言的通讯,因为这些都是规定好的,各个语言中使用都是一样的。例如JavaScriptJava通过Json进行数据交换,JavaScript利用eval()函数,而Javajackson,json-lib等类库来进行帮忙解析。


          2,共享数据库,这种方式也能实现不同系统的通信,但是对数据库的保护方面可能不够好。


          3,共享文件,可以将文件(一般是xml文件)上传到都可以访问到地方(例如:FTP server上)进行共享。


          4,使用小心中间件,如图:



         当然还有CORBAWeb Service比较成熟的技术等等,这些都是解决异构系统的通信的宏观方式。由于不同的系统处于不同的JVM中,这就需要考虑分布式架构的解决方案了,看一下核心图吧,体现了代理模式,这里还利用了JavaEEJNDI规范进行对象的查找等:


           由于Web Service的容易上手和传输的格式是xml文本格式(因为此可以利用dtdSchema进行规范约束),所以使用比较广泛,下边看一下Web Service的简单应用吧。


          Web Service技术得到了Java的支持,在JDK6以后都给出了相关规范的实现,有两种方式:

    1JAX-WS(XML web services的Java API)是SOAP方式即:简单对象访问协议(SimpleObject Access Protocol),它是用于交换XML标准通用标记语言下的一个子集)编码信息的轻量级协议

     2JAX-RS(Java API for RESTful Web Services )restful方式风格。

       

        再看一个概念: WSDL:WebService描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于XML标准通用标记语言下的一个子集)的语言,用于描述WebService及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。 下边是SOAP和WSDL在异步传输中的所用:


           这里只看一下第一种SOAP方式,提供的框架技术有CXF,XFireAXIS。而常用的是AxisCXF,先看一下两者的比较吧:


Axis互通信比较好,对其他语言访问的兼容性比较多;

CXF非常容易的整合到Spring架构中;

 

        看一下CXF如何集成到Spring进行开发服务端吧:

 

          1,加入jar包(够用的原则):

-cxf-2.5.10.jar

-wsdl4j-1.6.3.jar

-xmlschema-core-2.0.3.jar

-neethi-3.0.2.jar

-geronimo-servlet_2.5_spec-1.1.2.jar

-woodstox-core-asl-4.2.0.jar

-stax2-api-3.1.1.jar

           2web.xml中,配置前端控制器CXFServlet拦截Web Service请求

  1. <servlet>  
  2.        <servlet-name>cxf</servlet-name>  
  3.        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
  4.        <load-on-startup>1</load-on-startup>  
  5.    </servlet>  
  6.   
  7.    <servlet-mapping>  
  8.        <servlet-name>cxf</servlet-name>  
  9.        <url-pattern>/services/*</url-pattern>  
  10.   
  11.  </servlet-mapping>  
 
           3,将CXF提供的缺省配置文件cxf.xml引入到Spring配置文件中

  1. <import resource="classpath:META-INF/cxf/cxf.xml" />   

  4,基于CXF规范,采用JAX-WS方式开发北向接口,注意@WebService@WebParam注解的使用,还有就是实现类的编写加的注解要指定名称@Resource(name="userDaoImpl"),其它正常编写即可:


  1. @WebService  
  2. public interface WebServiceFacade {  
  3.   
  4.     public String selectUser(@WebParam(name="userId")String userId);  
  5. }  

           5,在配置文件中使用endpoint发布WebService,这里需要引入对应的命名空间和约束xsd

-引入命名空间jaxws

xmlns:jaxws="http://cxf.apache.org/jaxws

-加入jaxws命名使用的xsd

http://cxf.apache.org/jaxwshttp://cxf.apache.org/schemas/jaxws.xsd

  1. <jaxws:endpoint   
  2.   id="webServiceFacade"   
  3.   implementor="#webServiceFacadeImpl" //引用IoC中的id   
  4.   address="/WebServiceFacade" />  

           6,然后启用服务器,采用浏览器就可以进行访问了:应用程序根services/WebServiceFacade?wsdl。当然这里推荐一个测试服务接口的工具,非常好用的SoapUI。如果能够成功返回指定String,那么服务端就成功了。我们就可以通过任何语言的系统,通过此URL为接口访问此服务接口了,当然也可以使用生成的WSDL

 

       这样服务段就建好了,但是我们如何编写客户端Client进行调用呢?我用的Java语言,所以WSDL2Java方法这个就非常重要。使用eclipse自动的AXIS插件进行新建:就自动为我们生成客户端的存根,我们调用这些存根的方法即可完成对目标对象的调用。


          或者采用CXF中的wsdl2java.bat进行相关存根的生成,总而言之是利用工具给我们生成存根,我们调用即可。这样,我们就实现了不同语言不同程序之间的访问通信了。

 

         这也是继面向对象编程思想又一种较新的编程思想面向服务编程,这样我们就不用顾虑语言的差别,提供规范的服务接口,我们无论使用什么语言,就都可以访问使用了,大大提高了程序的复用率。


         例如,在我们的程序中添加天气预报,火车时刻表,利用银行进行付账,利用腾讯QQ,其他邮箱账号登陆系统等等,只要提供对应的服务接口我们就可以很容易的实现了,当然了,这里有些接口就需要收费了,但是这种方式无疑大大扩展了程序的边界,使复用性大大的提高了。算是一种改革吧!


     异步系统通信,Web Service初步总结,还在深入研究中……

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Web Service 那点事儿(1)
CXF + Spring 开发 Webservices
Spring和CXF整合发布WebService(服务端、客户端)最详细
WebService介绍
使用cxf3.0.4搭建webservice服务需要的最精简jar包
java开发webservice的几种方式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服