WebService基础

概念理解:
Web Service
    一、定义
      -----不是框架,也不是一种技术。
              而是一种跨平台、跨语言的规范。
    二、应用场景
        -----为了解决这样的需求场景:不同平台、不同语言所编写的应用之间如何相互调用。
      
    Web Service集中解决:
                  --1、远程调用;
                  --2、跨平台调用;
                  --3、跨语言调用。
    实际中用途:
           1、同一个公司的新旧系统的整合。
              例如:Linux上的Java应用,去调用windows平台的Delphi应用。
           2、不同公司的业务整合。
               业务的整合就要带来:不同公司的系统整合,不同公司的系统可能存在平台、语言不同德问题。
              例如:淘宝和当当 都调用京东物流系统的订单信息方法。

            3、内容聚合:
                  一个应用, 比如需要提供天气情况(气象局)、股票行情(证监会)、黄金行情(某基金系统)、编程语言行情......
               这种内容聚合的应用,需要调用大量不同平台、不同语言编写的应用的方法。。。

     三、实现技术
       CXF
      1、 Axis(Apache)-->>Axis 2(Apache) 
      2、 XFIre-->>CXF(XFire + Celtrix)
            XFire --(Web Service框架)
          Celtrix--(ESB框架)
      3、CXF
      SOA(面向服务的架构)
         Service1,Service2,Service3---所有组件都是“即插即用”的。
           IBM提倡的SOA架构, 希望以“组装电脑”的方式来开发软件。

           1、各种提供服务的组件。(Web Service)
           2、企业服务总线(Enterprise Service Bus, ESB)

        CXF号称是SOA框架,核心SOAP--描述(XML)wsdl--被调用(服务的接口)--客户端

    CXF(Apache)
        CXF内置了一个Jetty Web服务器。

------------------------------------------------
   使用CXF开发Web Service服务器端:

    /*****
       每个Web Service组件需要2个部分:接口和实现类。
    *****/

        (1)开发一个Web Service业务接口
             该接口要用@WebService修饰
         (2)开发一个Web Service实现类
               实现类也需要@WebService(endpointInterface="完整接口名称",serviceName="实现类名称")修饰
         (3)使用Endpoint类的静态方法来发布Web Service.
            例如:HelloWorld hw = new HelloWorldWs(); //接口类
              //调用Endpoint的publish方法发布Web Service
            //Endpoint.publish(address,implementor);
             Endpoint.publish("http://192.168.40.62/crazyit",hw);

           查看WSDL文档的浏览器路径:http://192.168.40.62/crazyit?wsdl

--------------------------------------------------------------

使用CXF开发Web Service客户端:
    (1)调用CXF提供的wsdl2java工具,根据WSDL文档生成相应的Java代码。
         (命令行:wsdl2java http://192.168.40.62/crazyit?wsdl)



         WSDL - Web Service Definition Language

       任何语言实现了Web Service,都需要提供并暴露WSDL文档。
    (2)找到wsdl2jaba所生成类中,一个继承了Service的类。
          该类的实例可当成工厂来使用。
     (3)调用Service子类实例的getXxxPort()方法(无参数的),返回Web Service的代理。

  形参、返回值
        1、当形参、返回值的类型是String、基本数据类型时,CXF肯定可以轻松处理。
        2、当形参、返回值类型是JavaBean的复合类、List集合、数组等时,
             CXF也可以很好的处理。
        3、还有一些像Map、非JavaBean式的复合类,CXF是处理不了的。
 
       
     
       
       





     

猜你喜欢

转载自451640893.iteye.com/blog/2276330