本文做者在学习使用Java开发Web Service(不包括Restful)时,因为不知道Java有这么多框架支持开发Web Service一度陷入迷惘,不知道这些框架各有java
什么不一样,各有什么优缺点。通过几天的查资料、实验、失败、再查资料、再实验的过程,终于有了一个大概的了解,也把本身的学习成果跟你们分享一下:web
用Java开发Web Service通常有三种方式,本文在Idea下分别使用三种方式并结合Spring容器实现了三个Demo,下面为你们一一介绍。spring
一、Axis、XFire和CXF方式浏览器
这几种框架都采用“代码优先”的方式开发Web Service,即先开发出普通的Java代码,而后使用框架自动将Java对象方法发布成Web Service。框架
Idea自带Axis框架,在建立工程时选择便可(Web Application->WebServices,Version中选择Apache Axis)。ide
该方式的开发过程很简单,实现好web service 类后,点击Idea窗口中的Tool->Web Service->Generate wsdl from java code,配置好服务地址便可。学习
该示例较简单未上传。测试
二、Spring-WS方式url
该框架是“文档优先”方式,即先制定出报文协议,而后再开发具体的服务应用。idea
Idea自带该框架,在建立工程时选择(Spring->Spring Web Services)便可自动下载相关包。
详细开发步骤以下:
2.1 在web.xml中添加servlet
2.二、 在WEB-INF下创建配置文件spring-ws-servlet.xml
2.三、 在resources目录下创建hello.wsdl
2.4 、建立web service 类和终结点
2.五、 在spring-ws-servlet.xml文件中配置终结点bean
示例Demo下载:http://files.cnblogs.com/wenjingu/springws.zip
三、JAX-WS方式
JAX-WS是JDK自带的框架,它是Java的Web服务标准。该框架同时支持“代码优先”方式和“文档优先”方式,但彷佛对“文档优先”方式的支持更好一些。
不少JAX-WS开发者都推荐使用“文档优先”方式。Idea自带该框架,在建立工程时选择(Web Application->WebServices,Version默认)便可自动下载相关包。
开发步骤以下:
3.一、“代码优先”方式与1相似
3.二、“文档优先”方式与2相似
示例Demo下载:http://files.cnblogs.com/wenjingu/jaxws.zip 只传了服务端,客户端按4.2节的步骤建立便可。
四、测试
4.一、在浏览器输入:http://localhost:8080/services/HelloWorld?wsdl能够显示该文件内容,输入:http://localhost:8080/services/HelloWorld可显示相似以下内容:
4.二、在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.三、不少开发者建议用SoapUI测试,本文还没有使用,有时间再研究下。
补充:
CXF如今已实现了JAX-WS2.0规范,开始提供对JAX-WS API的支持。