WebService Axis 快速开发

一、开发环境 
  •Myeclipse8.0 
  •Tomcat6.0 
  •Axis1.4 
  •Jdk1.6 
Axis下载: 
  Google:”Axis”,很容易找到Apache Axis的链接地址:http://ws.apache.org/axis/,下载最新的1.4Final。 
(好了准备工作做好了,现在我们来开发WebService!) 

二、用Java 开发 WebService Axis简单实例 
Axis支持三种WebService 的部署和开发,分别为: 
    1、Dynamic Invocation Interface(DII)方式 
    2、Dynamic Proxy方式 
    3、Stubs方式 
Stubs方式是最通用的做法,又因其灵活的特点,所以我建议使用这种方式。下面,我主要讲述这种方式的开发。 
1)创建Web工程 
    1、在Myeclipse上创建web工程,名为Test; 
    2、将jar包拷贝到WEB-INF/lib目录下; 
2)编写wsdd发布web服务 
    1、在src目录下创建服务端程序HelloDateServer.java,包名为: 
src/mypackage.server/HelloDateServer.java
 
Java代码   收藏代码
  1. package mypackage.server;  
  2.       
  3. import java.util.Date;  
  4.       
  5. //WebService服务端类  
  6. public class HelloDateServer {  
  7.    /** 
  8.     * 服务方法 
  9.      * @param yourName 
  10.     * @return  
  11.     */  
  12.     public String helloDate(String yourName){  
  13.         String rtStr = "Hello ,"+yourName+" ,it's: " + new Date();  
  14.         return rtStr;  
  15.     }  
  16.   
  17.     //Add method here......  
  18.   
  19. }  

WebService Axis 快速开发_第1张图片  
在Tomact环境发布一个WebService 只需要写两个配置文件: 
web.xml 、 server-config.wsdd 
web.xml文件是用来声明Webserver的,即声明server-config.wsdd文件(我个人的理解)。 
server-config.wsdd是Web服务的发布配置文件 

web.xml文件很容易配置,拷贝axis包里面的WebService示例的web.xml配置到我们的工程中的web.xml中就可以了。
 

Xml代码   收藏代码
  1. WEB-INF/web.xml  
  2. <?xml version="1.0" encoding="UTF-8"?>  
  3. <web-app version="2.5"   
  4.     xmlns="http://java.sun.com/xml/ns/javaee"   
  5.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  6.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  7.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  8.   <welcome-file-list>  
  9.     <welcome-file>index.jsp</welcome-file>  
  10.   </welcome-file-list>  
  11.     
  12.     <!-- =============== Axis Webservice =============-->  
  13.     <servlet>  
  14.         <servlet-name>AxisServlet</servlet-name>  
  15.         <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>  
  16.     </servlet>  
  17.     <servlet>  
  18.         <servlet-name>AdminServlet</servlet-name>  
  19.         <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>  
  20.         <load-on-startup>100</load-on-startup>  
  21.     </servlet>  
  22.     <servlet>  
  23.         <servlet-name>SOAPMonitorService</servlet-name>  
  24.         <servlet-class>org.apache.axis.monitor.SOAPMonitorService</servlet-class>  
  25.         <init-param>  
  26.             <param-name>SOAPMonitorPort</param-name>  
  27.             <param-value>5001</param-value>  
  28.         </init-param>  
  29.         <load-on-startup>100</load-on-startup>  
  30.     </servlet>  
  31.     <servlet-mapping>  
  32.         <servlet-name>AxisServlet</servlet-name>  
  33.         <url-pattern>/servlet/AxisServlet</url-pattern>  
  34.     </servlet-mapping>  
  35.     <servlet-mapping>  
  36.         <servlet-name>AxisServlet</servlet-name>  
  37.         <url-pattern>*.jws</url-pattern>  
  38.     </servlet-mapping>  
  39.     <servlet-mapping>  
  40.         <servlet-name>AxisServlet</servlet-name>  
  41.         <url-pattern>/services/*</url-pattern>  
  42.     </servlet-mapping>  
  43.     <servlet-mapping>  
  44.         <servlet-name>SOAPMonitorService</servlet-name>  
  45.         <url-pattern>/SOAPMonitor</url-pattern>  
  46.     </servlet-mapping>  
  47.     <mime-mapping>  
  48.         <extension>wsdl</extension>  
  49.         <mime-type>text/xml</mime-type>  
  50.     </mime-mapping>  
  51.     <mime-mapping>  
  52.         <extension>xsd</extension>  
  53.         <mime-type>text/xml</mime-type>  
  54.     </mime-mapping>  
  55.     
  56. </web-app>  


server-config.wsdd 文件是WebService的核心配置文件。Web服务能否发布,很大程度上取决于次文件的配置。可以说有了此文件,就有了Web服务。 
有两种方式可以配置此文件: 
   1、手写; 
    2、用Axis工具生成。 
我采用Axis工具生成(偷懒是其次,主要原因是不容易出错,也很容易开发)。 
用Axis的工具,我们必须为Axis搭建一个环境,因为刚才我们下载下来的都是jar包,在windows下要想应用这下jar包,必须将其添加到系统的CLASSPATH中。否则系统无法找到这些功能。 

将所有的jar包都添加到CLASSPATH; 
创建环境变量,设置AXIS的环境变量.
 

Java代码   收藏代码
  1. 变量名:AXIS_LIB  
  2. 变量值:C:\axis-1_4\lib[color=red](我是直接将下载下来的包解压到C盘)[/color]  
  3. 将以下变量值加入CLASSPATH  
  4. %AXIS_LIB%\axis.jar;  
  5. %AXIS_LIB%\axis-ant.jar;  
  6. %AXIS_LIB%\commons-discovery-0.2.jar;  
  7. %AXIS_LIB%\commons-logging-1.0.4.jar;  
  8. %AXIS_LIB%\jaxrpc.jar;  
  9. %AXIS_LIB%\log4j-1.2.8.jar;  
  10. %AXIS_LIB%\saaj.jar;  
  11. %AXIS_LIB%\wsdl4j-1.5.1.jar;  


编写deploy.wsdd文件 
在任意路径下创建。我是在myeclipse工程中WEB-INF下创建的。部署时便于生成server-config.wsdd同时也便于工程修改时,修改此文件。
 
Xml代码   收藏代码
  1. <deployment xmlns="http://xml.apache.org/axis/wsdd/"  
  2.     xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
  3.     <!-- 这里的stubs为wsdd描述符中的ServiceNamespace  -->  
  4.     <service name="stubs" provider="java:RPC">  
  5.         <!-- 这里的ClassName就是我的服务类了,  
  6.         这个服务主要功能就是传递一个自定义的对象  -->  
  7.         <parameter name="className" alue="mypackage.server.HelloDateServer " />  
  8.         <!-- 这里描术的意思是,此服务类中的方法全部享出来. value值为*号  
  9.         如果你只想让你的客户端只能调用其中一个方法时,value值改为方法名就可以了. -->  
  10.         <parameter name="allowedMethods" value="*" />  
  11.     </service>  
  12. </deployment>  

(简单吧!) 
接下来就是生成server-config.wsdd文件! 
生成server-config.wsdd配置文件 
第一步:用Myeclipse部署Test工程并运行Tomcat 

WebService Axis 快速开发_第2张图片 
第二步:(关键的一步)打开命令与提示符,进入Test工程目录的WebRoot/WEB-INF目录下。 
C:\>cd C:\apache-tomcat-6.0.20\webapps\Test\WEB-INF (我的Tomcat直接解压到c盘) 
>java org.apache.axis.client.AdminClient –l http://localhost:8080/Test/services/stubs deploy.wsdd (这句话就是生成server-config.wsdd文件的命令,记住,保持Tomact是运行的,不然会报错!) 
运行结果:
Java代码   收藏代码
  1. - Unable to find required classes (javax.activation.DataHandler and javax.mail.i  
  2. nternet.MimeMultipart). Attachment support is disabled.  
  3. Processing file deploy.wsdd  
  4. <Admin>Done processing</Admin>  

(Activation.jar 和 mail.jar这两个包我们没有加入到CLASSPATH中,但是不影响我们的开发。)在此路径下就生成了server-config.wsdd文件了。(哈,这就是我们想要的文件) 
将其拷贝到我们的eclipse工程中,以便我们以后部署。 
好了大功告成!WebService发布了。重启Tomcat 
我们来测试一下,发布是否成功。 
Myeclipse给我们提供了Soap工具。打开SOAP Web Services Explorer 
 
然后点击WSDL Page 
 
点击WSDL Main 
输入URL:http://localhost:8080/Test/services/stubs?wsdl 
接下来就可以测试了! 我按照刚刚写的代码,没有问题。 

3)生成客户端client stub文件打开浏览器,输入http://localhost:8080/Test/services/stubs?wsdl点击文件->另存为。存到任何目录。我是存在C:\apache-tomcat-6.0.20\webapps\Test\WEB-INF 这样,我的命令提示符就不用换路径了。 

stubs.xml重命名为stubs.wsdl 

在命令提示符输入如下命令:
Java代码   收藏代码
  1. java org.apache.axis.wsdl.WSDL2Java –o ./ -p mypackage.client stubs.wsdl  
解释一下此命令: 
Java代码   收藏代码
  1. java org.apache.axis.wsdl.WSDL2Java –o %Output_Path% -p %Package% stubs.wsdl  

%Output_Path%是客户端文件输出路径,%Package%是包名。 

将生成的client文件拷贝到myeclipse中。 

WebService Axis 快速开发_第3张图片 

接下来,在mypackage.client中添加客户端测试代码。
 
Java代码   收藏代码
  1. src/mypackage/StubsClient.java  
  2.   
  3. package mypackage.client;  
  4.   
  5. import java.net.URL;  
  6.   
  7. public class StubsClient {  
  8.   
  9.     /** 
  10.      * @param args 
  11.      */  
  12.     public static void main(String[] args) {  
  13.         // TODO Auto-generated method stub  
  14.         // 定义的service和stub  
  15.         HelloDateServerService service = null;  
  16.         HelloDateServer stub = null;  
  17.         try {  
  18.             System.out.println("connect......");  
  19.             String StrPortAddress = "http://localhost:8080/Test/services/stubs";  
  20.             URL portAddress = new URL(StrPortAddress);  
  21.             // 得到客户端服务  
  22.             service = new HelloDateServerServiceLocator();  
  23.             // 得到客户端stub  
  24.             stub = service.getstubs(portAddress);  
  25.             // 测试服务方法  
  26.             String resultStr = stub.helloDate("Google");  
  27.             System.out.println(resultStr);  
  28.         } catch (Exception e) {  
  29.             e.printStackTrace();  
  30.         } finally {  
  31.             System.out.println("End.");  
  32.         }  
  33.     }  
  34. }  


现在所有的都做完了。试试看吧。一定成功! 

用Axis发布Web服务就这么简单。 
我这个简单的Web服务的服务类方法的参数是简单的String类型。如果你的工程要求服务类方法传递自定义参数比如UserInfo等等,就需要你研究一下怎么传递自定义类型参数。其实也不难。可以参考http://blog.csdn.net/kay5804/archive/2008/05/04/2382428.aspx。这个人写的很不错! 

刚打球回来,又做电脑旁边这么久,脖子疼,感觉自己得颈椎病了。 

我要讲的就这么多,旨在,帮助大家快速入手Web Service。如果有什么问题,可以给我留言,有什么错误请指出。谢谢!

你可能感兴趣的:(WebService Axis 快速开发)