码迷,mamicode.com
首页 > Web开发 > 详细

开发Web Service的几种方式

时间:2016-09-12 12:27:06      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

本文作者在学习使用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的几种方式

标签:

原文地址:http://www.cnblogs.com/xingzc/p/5864143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!