2011年10月10日 星期一

【Axis2】Java Web Services 範例

上一篇【Axis2】Java Web Services 環境配置  介紹了 Axis2 的環境配置之後

接著就來寫一個簡單的 Hello World 範例

第一步先建立 Server 端的部分

1. 建立一個一般的 Java project 名稱為 HelloWorld4WS

2. 匯入 Axis2 的 Library

3.接著建立一個簡單的 HelloService 類別

package org.service;
public class HelloService 
{
        // method : sayHello, return String
        public String sayHello(){
                return "Hello Web Services";
        }
}

接著要定義一個 services.xml 來說明你的 Web service 提供哪些服務及服務名稱

在 project 的目錄下建立一個資料夾 名為 META-INF

並在該資料夾內新增一個  services.xml 檔案

內容如下


<service name="HelloWorld4WS">
    <Description>
        Hello world example for Web Services
    </Description>
    <parameter name="ServiceClass" locked="false">org.service.HelloService</parameter>
    <operation name="sayHello">
    <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </operation>
</service>


完成之後就可以將這個 Java project 包成 Jar 檔

File > Export... > JAR file  如下圖所示






















按下 Finish 之後就完成打包  ((可以包成 .jar 或是 .aar 檔

接著就需要將打包後的檔案上到 Axis 2

首先啟動 Apache Tomcat 5.5  完成後瀏覽  http://localhost:8080/axis2/axis2-admin/listService

選左邊的 Upload Service

並將你的檔案上傳上去   上傳成功之後稍等一會 點擊旁邊的 Available Services

應該會看到如下圖 :



















可以點 HelloWorldWS 進去看你的 WSDL

點進去後注意目前網址 http://localhost:8080/axis2/services/HelloWorld4WS?wsdl

再來就要撰寫 Client 的測試了

一樣先建立一個一般的 Java project 名為:HelloWorld4WSClient

同樣的完成後匯入 Axis2 的 Library

接著要替你剛剛寫的 Web Services 產生 Client 端的程式碼

作法如下:

開啟 cmd  將路徑轉到 Axis 2 的 bin 目錄下  EX:C:\axis2-1.5\bin

並輸入 wsdl2java -uri http://localhost:8080/axis2/services/HelloWorld4WS?wsdl

這樣會在 bin 目錄下產生一個 src 的資料夾 並找到兩個檔案  如下圖






將這兩個檔案放到 Client 的 project 下

最後在撰寫呼叫的測試程式

import java.rmi.RemoteException;
import org.service.HelloWorld4WSStub;
import org.service.HelloWorld4WSStub.SayHelloResponse;
public class TestWS {

 /**
  * @param args
  * @throws RemoteException 
  */
 public static void main(String[] args) throws RemoteException {
  // TODO Auto-generated method stub
  HelloWorld4WSStub stub = new HelloWorld4WSStub();
  SayHelloResponse response = stub.sayHello();
  String str = response.get_return();
  System.out.println("Return " + str);
 }

}

沒有留言:

張貼留言