开发和部署基于 JAX-WS2.0 的 Web 服务
概述
JAX-RPC 作为第一代Web 服务,是利用Web 服务部署描述符进行部署。由于不同的Web 服务器使用不同的部署描述符,因此要部署同一个Web 服务到不同的Web 服务器上去,就需要提供不同的部署描述符。这带来了极大的不便。基于 JAX-WS2.0 的 Web 服务是第二代Web服务,其特点是利用JAVA注解描述Web 服务,而不再使用部署描述符,因而我们就可以开发能部署到不同Web 服务器上的统一的Web 服务。本文开发一个简单的Web 服务,然后重点介绍如何部署到支持JAX-WS2.0的Web 服务器上去。当前大部分Web 服务器的新版本已经都支持JAX-WS2.0,如IBM WAS、BEA Weblogic、Axis 等。本文以IBM WAS7.0 和Axis2.0 为例描述如何部署基于 JAX-WS2.0 的 Web 服务。
开发一个简单的基于JAX-WS2.0 的 Web 服务
一个简单的Web服务:HelloWorld
我们写一个最简单的Web服务:HelloWorld。该Web服务只有一个class文件,其中包含一个直接返回“Hello World !”字符串的hello( ) 方法。代码如下所示:
图1. HelloWorld源代码
从代码中可以看到,我们使用了@WebService 注解来标识这个Web服务。JDK 从1.6版本开始支持Web Service 注解,因此在编译的时候需要使用JDK1.6。除了@WebService之外,还有几个注解如@WebMethod、@WebParam等,其中@WebMethod可以标识需要暴露的某些WebService 方法。由于本例中只有一个hello( ) 方法,因此不需要使用@WebMethod注解。
部署 Web 服务到AXIS2
安装Apache Tomcat和AXIS2
1. 下载并安装apache-tomcat-5.5.26;
2. 下载axis2-1.4.1-war.zip 并解压,得到axis2.war,然后拷贝axis2.war到tomcat的/webapps目录下;
3. 启动tomcat,访问axis2的页面,如下图所示:
图2. 访问axis2页面
4. 点Services链接,可以看到当前缺省的Web Serives : Version
图3 缺省部署的Web Serives
部署Web服务
Axis2支持两种Web服务部署方式:AAR + services.xml部署,和JAR部署。前者是将Web服务打成AAR包,并且利用services.xml部署文件描述该Web服务;后者是利用Web Service 注解部署Web服务。本文使用JAR部署方式,因为该方式不需要额外的部署文件,完全利用Web Service 注解,更能说明Web服务部署的平台(即Web服务器)无关性。
1. 将HelloWorld打成一个JAR包:HelloWorld.jar;
2. 在axis2/WEB-INF 目录下建一个新的目录servicejars并拷贝HelloWorld.jar到该目录,如下图所示:
图4. 部署HelloWorld之后的目录结构
3. 在tomcat的监控窗口中,可以看到HelloWorld被动态解析和部署到了Axis2上:
图5. HelloWorld被动态部署到Axis2
4. 重新访问Axis2页面上的Services 链接,可以看到新的Web服务HelloWorld
图6. 新的Web服务HelloWorld
部署 Web 服务到 WAS7
WebSphere 应用服务器 6.1(WAS 6.1)的Feature Pack, WSFP,引入了对 JAX-WS2.0 的支持。WAS7将该功能作为基本模块之一,不再需要安装Feature Pack。
1. 下载WAS7 的试用版 :
http://www.ibm.com/developerworks/cn/websphere/downloads/
2. 安装WAS7并启动
3. 将开发的HelloWorld打成一个普通的WAR包,其中的web.xml如下所示:
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee" http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name> MyHelloWS </display-name> </web-app> |
4. 通过WAS7的Administrative Console 页面部署该应用:
图7. 部署HelloWorld到WAS7
5. 安装完毕后,HelloWorld服务被部署到WAS7上,服务名称为HelloWorldService
图8. HelloWorld部署成功
6. 通过网页查看该Web服务的wsdl描述,如下所示:
图9. 查看Web服务的wsdl
7.到此,基于JAX-WS2.0的Web服务已经被部署到WAS7上
小结
本文通过一个简单的例子,描述如何开发和部署一个基于JAX-WS2.0的Web服务。JAX-WS2.0的特性之一就是通过JAVA注解来描述Web服务,而不再需要额外的部署描述文件,从而避免了在不同的Web服务器上需要提供不同的部署描述文件的麻烦。本文以AXIS2和WAS7为例,说明了部署一个JAX-WS2.0的Web服务的过程。
参考资料
l Download WAS7 Tutorial Version 下载WAS7 试用版
l Apache Axis2 Axis2的官方页面
l JAX-WS 2.0 JSR 224: Java API for XML-Based Web Services (JAX-WS) 2.0