本文作者在学习使用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. CreateCompatibleDC与BitBlt 学习

    CreateCompatibleDC与BitBlt CreateCompatibleDC 创建一个与指定设备一致的内存设备描述表. HDC CreateCompatibleDC(HDC hdc //设 ...

  2. android学习——error opening trace file: No such file or directory (2)

    1.疑惑: 程序运行起来的时候日志总是显示下面这个错误,但是不影响程序的正常进行,我是用真机来测试的,android4.4.4(API17). 02-11 14:55:03.629 15525-155 ...

  3. 让less编译通过css滤镜

    写IE6 hack的时候,发现在less中直接写css滤镜是会报错的,不能编译通过. 解决方法为:用~“”把相关的css代码包裹起来,例如: _top:~"expression(docume ...

  4. hdu5536 字典树xor

    一想到xor还要求最大类似的题,字典树效率高. 此代码c++ TLE. #include<stdio.h> #include<string.h> ; struct node { ...

  5. 关于OOM那些事儿

    最近在aliyun上crontab里放的一个java脚本把机器搞翻了,ssh连不上T_T 发现OOM了,真是无语.并不懂Java的内存模型,转一篇备用吧. 转载自:http://www.cnblogs ...

  6. codeforces 58E:Expression

    Description One day Vasya was solving arithmetical problems. He wrote down an expression a + b = c i ...

  7. groovy-位运算

    从Groovy 1.0 beta 10开始,Groovy支持位运算:<<. >>, >>>, |, &, ^, and ~. 下表列出了位运算的操作符 ...

  8. PL/0编译器(java version)–Praser.java

    1: package compiler; 2:   3: import java.io.IOException; 4: import java.util.BitSet; 5:   6: /** 7: ...

  9. Nutch的配置以及动态网站的抓取

    http://blog.csdn.net/jimanyu/article/details/5619949 一:配置Nutch: 1.解压缩的nutch后,以抓取http://www.163.com/为 ...

  10. WPF中嵌入Office编辑器(支持Word、Excel、PPT、Visio等)

    现在有一个项目,需要使用wpf做一个简单的客户端,用来生成word.excel.ppt.visio等文档,这就需要能够在wpf中嵌入office的编辑器,并对office文档进行编辑. 在网上搜索了一 ...