Axis通過wsdd部署Web Service


axis網上的教程很多,不過搜來搜去,總是只有那么幾篇。仔細看了一下那幾篇文章,都感覺到不是自己想要的,所以自己整理了一篇分享一下。

 

本文介紹axis應用的一個小例子,沒有麻煩的命令行操作,只需照下面的步驟做就可以了。以下是詳細的操作步驟。(注:本實例用的是axis,非axis2)

 

  1. 1.       環境准備

l  MyEclipse 6.5

l  Tomcat 6

l  JDK 1.5

l  axis(非axis2)

 

  1. 2.       新建web工程

新建一web工程,工程名稱為axistest。新建完成后,導入下圖所示的axis相關的jar包。

 

 

  1. 3.       在web.xml中添加axis相關的配置信息

 

[xhtml]  view plain  copy
  1. <servlet>  
  2.     <display-name>Apache-Axis Servlet</display-name>  
  3.     <servlet-name>AxisServlet</servlet-name>  
  4.     <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>  
  5. </servlet>  
  6.   
  7. <servlet>  
  8.     <display-name>Axis Admin Servlet</display-name>  
  9.     <servlet-name>AdminServlet</servlet-name>  
  10.     <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>  
  11.     <load-on-startup>100</load-on-startup>  
  12. </servlet>  
  13. <servlet-mapping>  
  14.     <servlet-name>AxisServlet</servlet-name>  
  15.     <url-pattern>/servlet/AxisServlet</url-pattern>  
  16. </servlet-mapping>  
  17. <servlet-mapping>  
  18.     <servlet-name>AxisServlet</servlet-name>  
  19.     <url-pattern>*.jws</url-pattern>  
  20. </servlet-mapping>  
  21. <servlet-mapping>  
  22.     <servlet-name>AxisServlet</servlet-name>  
  23.     <url-pattern>/services/*</url-pattern>  
  24. </servlet-mapping>  
  25.    <servlet-mapping>  
  26.     <servlet-name>AdminServlet</servlet-name>  
  27.     <url-pattern>/servlet/AdminServlet</url-pattern>  
  28. </servlet-mapping>  

 

 

  1. 4.       新建提供服務的Java

在src下新建com包,在com包下新建HelloWorld類,HelloWorld的內容如下:

 

[java]  view plain  copy
  1. package com;  
  2.   
  3. public class HelloWorld {  
  4.   
  5.     public String sayHello(String msg){  
  6.         if(null==msg || "".equals(msg)){  
  7.             return "您好!";  
  8.         }else{  
  9.             return "您好" + msg + "!";  
  10.         }  
  11.     }  
  12.       
  13.     public int sayAge(){  
  14.         return 28;  
  15.     }  
  16.   
  17. }  

  

 

  1. 5.       配置server-config.wsdd

在WEB-INF下新建server-config.wsdd文件,內容如下:

 

[xhtml]  view plain  copy
  1. <deployment xmlns="http://xml.apache.org/axis/wsdd/"  
  2.     xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
  3.   
  4.     <!-- 處理器 -->  
  5.     <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" />  
  6.           
  7.     <!-- 一個服務 -->  
  8.     <!-- provider="java:RPC"  webservice是以javabean的形式提供的-->  
  9.     <service name="helloWorldService" provider="java:RPC">  
  10.         <!-- 指定類名 -->  
  11.         <parameter name="className" value="com.HelloWorld" />  
  12.         <!-- 類中允許訪問的方法 -->  
  13.         <parameter name="allowedMethod" value="*"></parameter>  
  14.     </service>  
  15.       
  16.     <!-- 指定處理器 -->  
  17.     <transport name="http">  
  18.         <requestFlow>  
  19.             <handler type="URLMapper"/><!-- 引用上邊的 -->  
  20.         </requestFlow>  
  21.     </transport>  
  22.       
  23. </deployment>  

 

wsdd文件標簽節點說明:

deployment:表明這是一個axis部署描述文件;

service:axis提供的一個web service服務。service標簽中parameter allowedMethod用於指定一個以空格分隔的方法名,只有這些方法可以通過web service訪問。也可以將這個值指定為“*”表示所有的方法都可以訪問。

provider:服務類型,共有四種,分別是RPC,Document,Wrapped和Message。詳見org.apache.axis.providers包的API文檔;

parameter:用來設置Axis的各種屬性;

requestFlow:局的請求Handlers,在調用實際的服務之前調用;

transport:定義了服務器端的傳輸方式

 

至此web service相關的東西已經配置好,此時工程的目錄結構如下

 

 

 

 

  1. 6.       部署到Tomcat測試

將工程發布到Tomcat,在瀏覽器里訪問http://127.0.0.1:9999/axistest/services,如果出現如下頁面,則表示web service部署成功

 

 

點擊上面的wsdl鏈接,進入下圖所示頁面

 

注意上面的紅圈的namespace,下面測試QName有用到。

 

  1. 7.       客戶端測試

在com包下新建測試類,名稱為ClientTest,內容如下:

 

[java]  view plain  copy
  1. package com;  
  2.   
  3. import java.NET.MalformedURLException;  
  4. import java.rmi.RemoteException;  
  5.   
  6. import javax.xml.namespace.QName;  
  7. import javax.xml.rpc.ServiceException;  
  8.   
  9. import org.apache.axis.client.Call;  
  10. import org.apache.axis.client.Service;  
  11.   
  12. /** 
  13.  * @author 花非花霧非霧 
  14.  * @date 2010-12-24 
  15.  */  
  16. public class ClientTest {  
  17.   
  18.     public static void main(String[] args) throws MalformedURLException, RemoteException {  
  19.           
  20.         Service service = new Service();  
  21.         try {  
  22.               
  23.             Call call = (Call) service.createCall();  
  24.             //設置地址  
  25.             call.setTargetEndpointAddress(new java.Net.URL("http://127.0.0.1:9999/axistest/services/helloWorldService?wsdl"));  
  26.             //設置要執行的方法  
  27.             call.setOperationName(new QName("http://com","sayHello"));  
  28.             //設置要傳入參數,如果沒有要傳入的參數,則不要寫這個  
  29.             call.addParameter("msg", org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN);  
  30.             //設置返回的類型  
  31.             call.setReturnType(org.apache.axis.Constants.XSD_STRING);  
  32.               
  33.             String name = "花非花霧非霧";  
  34.             //執行,調用webservice  
  35.             String result = (String) call.invoke(new Object[]{name});  
  36.             System.out.println("返回的結果是:"+result);  
  37.               
  38.         } catch (ServiceException e) {  
  39.             e.printStackTrace();  
  40.         }  
  41.     }  
  42.   
  43. }  

  

 

如果一切正常,運行結果如下:

返回的結果是:您好花非花霧非霧!

 

 

參考資料:

  1. axis 的官方資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM