• Spring学习(七)——开发Web Service的几种方式


    本文作者在学习使用Java开发Web Service(不包括Restful)时,由于不知道Java有这么多框架支持开发Web Service一度陷入迷惘,不知道这些框架各有

    什么不同,各有什么优缺点。经过几天的查资料、实验、失败、再查资料、再实验的过程,终于有了一个大概的了解,也把自己的学习成果跟大家分享一下:

    用Java开发Web Service一般有三种方式,本文在Idea下分别使用三种方式并结合Spring容器实现了三个Demo,下面为大家一一介绍。

    1、Axis、XFire和CXF方式

    这几种框架都采用“代码优先”的方式开发Web Service,即先开发出普通的Java代码,然后使用框架自动将Java对象方法发布成Web Service。

    Idea自带Axis框架,在创建工程时选择即可(Web Application->WebServices,Version中选择Apache Axis)。

    该方式的开发过程很简单,实现好web service 类后,点击Idea窗口中的Tool->Web Service->Generate wsdl from java code,配置好服务地址即可。

    该示例较简单未上传。

    2、Spring-WS方式

    该框架是“文档优先”方式,即先制定出报文协议,然后再开发具体的服务应用。

    Idea自带该框架,在创建工程时选择(Spring->Spring Web Services)即可自动下载相关包。

    详细开发步骤如下:

    2.1 在web.xml中添加servlet

    2.2、 在WEB-INF下建立配置文件spring-ws-servlet.xml

    2.3、 在resources目录下建立hello.wsdl

    2.4 、创建web service 类和终结点

    2.5、 在spring-ws-servlet.xml文件中配置终结点bean

    示例Demo下载:http://files.cnblogs.com/wenjingu/springws.zip

    3、JAX-WS方式

    JAX-WS是JDK自带的框架,它是Java的Web服务标准。该框架同时支持“代码优先”方式和“文档优先”方式,但似乎对“文档优先”方式的支持更好一些。

    很多JAX-WS开发者都推荐使用“文档优先”方式。Idea自带该框架,在创建工程时选择(Web Application->WebServices,Version默认)即可自动下载相关包。

    开发步骤如下:

    3.1、“代码优先”方式与1类似

    3.2、“文档优先”方式与2类似

    示例Demo下载:http://files.cnblogs.com/wenjingu/jaxws.zip 只传了服务端,客户端按4.2节的步骤创建即可。

    4、测试

    4.1、在浏览器输入:http://localhost:8080/services/HelloWorld?wsdl可以显示该文件内容,输入:http://localhost:8080/services/HelloWorld可显示类似如下内容:

    1

    4.2、在Idea中创建一个WebService Client工程,idea会自动创建一些代码,修改后如下所示:

    public class HelloWorldClient {
      public static void main(String[] argv) {
          mypackage.HelloWorld service = new HelloWorldService().getHelloWorldPort();
          //invoke business method
          service.sayHelloWorldFrom("192.168.20.106");
      }
    }
    

    执行后会在服务端打印:Hello, world, from 192.168.20.106。

    4.3、很多开发者建议用SoapUI测试,本文尚未使用,有时间再研究下。

    补充:

    CXF现在已实现了JAX-WS2.0规范,开始提供对JAX-WS API的支持。

  • 相关阅读:
    使用npoi做excel导出真心方便
    JAVA泛型(代码级解释)
    数据库战略高度解析(4) JDBCODBC
    [Python] 函数lambda(), filter(), map(), reduce()
    JEECG引领新的开发模式,让开发更加专注于业务!
    Parse 是什么
    Openflashchart及代理类设计介绍
    数据库战略高度解析(3) ODBC
    java 中paint .repaint.update
    svn利用钩子脚本功能实现代码同步到web目录
  • 原文地址:https://www.cnblogs.com/wenjingu/p/4094180.html
Copyright © 2020-2023  润新知