本文以Axis 1.1版本为例,详细介绍如何在项目中集成Axis来开发Web Service。Axis 1.1只能在以下环境中运行:
Tomcat 5.0.x及之前的版本
JKD 1.4.x及之前的版本
一、环境的搭建
1、安装axis-1_1:拷贝axis-1_1到任意一个目录下即完成安装,如D:\axis-1_1。
2、设置环境变量:
AXIS_HOME:D:\axis-1_1
AXIS_LIB:%AXIS_HOME%\lib
AXISCLASSPATH:%AXIS_LIB%\axis.jar;%AXIS_LIB%\axis-ant.jar;%AXIS_LIB%\commons-discovery.jar;%AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\wsdl4j.jar;%AXIS_LIB%\xercesImpl.jar;%AXIS_LIB%\xml-apis.jar
二、Axis框架的整合
1、将D:\axis-1_1\lib下的所有jar文件拷贝到Web应用程序的WEB-INF\lib目录下。
2、在web.xml文件中加入以下配置信息
<servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>*.jws</url-pattern> </servlet-mapping> <mime-mapping> <extension>wsdl</extension> <mime-type>text/xml</mime-type> </mime-mapping> <mime-mapping> <extension>xsd</extension> <mime-type>text/xml</mime-type> </mime-mapping>
3、在Web应用程序的根目录下新建一个文件夹用于存放jws文件,这里假设文件夹名为axis。可以将一个java文件通过修改其扩展名得到jws文件(注意:java文件不能包含包路径)。所以,我们可以先在java环境下编写好表示WebService的java类,然后,修改java类的扩展名为jws,即可得到我们需要的jws文件。
4、我们在src的根目录新建一个无包路径的java类,假设文件名为Webservice,该java类源代码如下:
public class Webservice { public String sayHello(String username){ if(username==null || username.length()==0){ return "Hello Guest"; }else{ return "Hello " + username; } } }
5、将Webservice.java文件拷贝到上面创建的文件夹axis中,并修改其扩展名为jws。
6、启动应用服务器后,在IE浏览器中访问该jws文件。作者是用Tomcat5.5发布的,端口为8888,所以访问jws文件的URL类似如下:
http://localhost:8888/MyWebApp/axis/Webservice.jws
WSDL描述的URL就类似如下:
http://localhost:8888/MyWebApp/axis/Webservice.jws?wsdl
如果以上两个URL都能正常访问,则表示Axis框架已经整合成功。
三、生成Web service接口文件
如果项目中需要调用Web service中的方法时,需要根据WSDL描述的URL来生成相应的接口文件。生成接口文件的步骤如下:
1、在DOS中定位到axis-1_1\lib目录,然后执行以下指令:
java -cp "%AXISCLASSPATH%" org.apache.axis.wsdl.WSDL2Java http://localhost:8888/MyWebApp/axis/Webservice.jws?wsdl -o -p
。指令执行完毕后,将会在lib目录产生java接口文件。作者范例中产生以下四个文件:
Webservice.java
WebserviceService.java
WebserviceServiceLocator.java
WebserviceSoapBindingStub.java
2、将这些接口文件纳入到项目中,接口文件的包路径根据具体情况作调整。
四、调用Web service方法的范例代码:
WebserviceServiceLocator locator = new WebserviceServiceLocator(); Webservice wsUtil = locator.getWebservice(new URL("http://localhost:8888/MyWebApp/axis/Webservice.jws?wsdl")); String ret = wsUtil.sayHello("Raymond.chen");