本文作者在学习使用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可显示类似如下内容:

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

1
2
3
4
5
6
7
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的支持。

开发Web Service的几种方式的更多相关文章

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

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

  2. JAVA开发Web Service几种框架介绍

    郑重声明:此文为转载来的,出处已不知了,侵告删. 在讲Web Service开发服务时,需要介绍一个目前开发Web Service的几个框架,分别为Axis,axis2,Xfire,CXF以及JWS( ...

  3. Web Service学习-CXF开发Web Service实例demo(一)

    Web Service是什么? Web Service不是框架.更甚至不是一种技术. 而是一种跨平台,跨语言的规范 Web Service解决什么问题: 为了解决不同平台,不同语言所编写的应用之间怎样 ...

  4. 用Delphi7开发Web Service程序 转

        转:http://rosehacker.blog.51cto.com/2528968/450160 用Delphi7开发Web Service程序,并把服务程序放在IIS Web服务器上提供给 ...

  5. XFire构建服务端Service的两种方式(转)

    XFire构建服务端service的两种方式,一是用xfire构建,二是和spring集成构建. 一,xifre构建,确保把xfire的jar包导入到工程中或classpath. 1,service的 ...

  6. Web Service进阶(五)SOAPBinding方式讲解

    Web Service进阶(五)SOAPBinding方式讲解 Java API for XML Web Services (JAX-WS) 2.0 (JSR 224) Standard Implem ...

  7. Axis2开发WebService客户端 的3种方式

    Axis2开发WebService客户端 的3种方式 在dos命令下   wsdl2java        -uri    wsdl的地址(网络上或者本地)   -p  com.whir.ezoffi ...

  8. 在Tomcat中部署web项目的三种方式

    搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...

  9. #Eclipse web工程 部署 三种方式 3

    Eclipse web工程 部署 三种方式 3.热部署 在Eclipse中,实现 修改一个.java文件或者.jsp文件甚至是配置文件,不需要重启WEB服务器的前提下让修改生效,实现tomcat自动加 ...

随机推荐

  1. java的RMI(Remote Method Invocation)

    RMI 相关知识RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网络 ...

  2. tomcat服务器上webapps里的文件名和项目名称不一样,修改方法

    第一种方法:打开工程所在目录,找到一个 .mymetadata的文件,用记事本等打开,内容大致如下: <?xml version="1.0" encoding="U ...

  3. ~~圣诞节到啦, canvas雪花效果, 漂亮到简直没天理啊~~

    看到coding的主界面有雪花, 原来,哇,  真漂亮, 一看源代码, 哦了个去, angular写的, 压力好大, 分析分析分析分析.... 然后就写成jQ插件的样子给大家用了. 在线预览的页面是: ...

  4. poj1470 LCA Tarjan

    比较直接的题目,入门一下. #include<map> #include<queue> #include<stack> #include<cmath> ...

  5. Gson 的使用

    Gson 的使用简介Gson 是 Google 开发的Java API,用于转换Java对象 和 Json 对象. 使用Maven 依赖<dependency> <groupId&g ...

  6. 使用quartz 定时任务

    Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. ...

  7. Java基础-JDK动态代理

    JDK的动态代理依靠接口实现  代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代 ...

  8. Spring对Hibernate的session生效期(事物提交管理)介绍

    在Hibernate中我们每次进行一个操作的的时候我们都是要先开启事务,然后进行数据操作,然后提交事务,关闭事务,这样做的原因是因为Hibernate默认的事务自动提交是false,它是需要人为的手动 ...

  9. PHP 7.1 新特性一览

    可空类型主要用于参数类型声明和函数返回值声明.主要的两种形式如下:<?phpfunction answer(): ?int  {   return null; //ok}function ans ...

  10. zabbix 分布式监控(proxy)源码安装

    安装分布式监控(代理节点) 1.下载软件zabbix-3.2.1.tar.gz 1.1 解压 wget http://nchc.dl.sourceforge.net/project/zabbix/ZA ...