AXIS 2リモート呼び出しWebService例(Eclipse+AXIS)

3493 ワード

Web ServiceをTomcatまたは他のアプリケーションサーバに投稿した後、このWeb Serviceを呼び出すことができる2つの方法があります.
      1、ブラウザで呼び出して、仕様のXMLファイルに戻ります.      2、クライアントプログラムで呼び出し、結果を返して、カスタムフォーマットができます.
      次に、Eclipse J 2 EEを開発ツールとして利用して、WebServiceを呼び出すAxisの簡単な例を示します.      最初の呼び出しは私のもう一つのブログを見ました.http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/10/3072216.html      ステップは以下の通りです          準備作業:AXIS 2最新版をダウンロードする(公式ダウンロード:http://axis.apache.org/axis2/java/core/download.cgi)AXISライブラリを導入し、ダウンロードパッケージの中にある./lib/ディレクトリのjarファイルをプロジェクトのWEB-INFの下のlibファイルにコピーする.
      第一歩:Webプロジェクトを新規作成し、プロジェクト名はWebServiceTestである.            第二ステップ:簡単な印刷文字列を作成するハローワールド.java:
1 public class HelloWorld {  
2       
3     public String printStr(String name){  
4         String resultStr="Hello," + name;  
5        
6         System.out.println(resultStr);  
7         return resultStr;  
8     }  
9 }  
     第三ステップ:Hello World.java-Web Services-C-reate Web serviceを右クリックして、次のステップを順にクリックしてください.finishでは、WebContintディレクトリの下にwsdlディレクトリが作成されています.ディレクトリの下にハローWorld.wdlがあります.
      ステップ4:ウェブserviceをテストします.Hello World.wsdl-Web Services-T-Tnest with Web Services Explorerを右クリックします.方法名connectStrをクリックします.入力パラメータAlexia---ポイントgo.この時、コンソールからHello、Alexiaを出力します.テストが成功しました.WebServiceは大丈夫です.
     
      第5ステップ:クライアント呼び出しタイプHello World Testを作成し、AXIS 2を利用して遠隔的にハローWorldを呼び出します.(遠隔呼び出しを表現するために、Projectを新規作成します.名前はAxis Testです.)コードは以下の通りです. 
 1 import java.rmi.RemoteException;
 2 import javax.xml.rpc.ParameterMode;
 3 import javax.xml.rpc.ServiceException;
 4 import org.apache.axis.client.Call;
 5 import org.apache.axis.client.Service;
 6 import org.apache.axis.encoding.XMLType;
 7 
 8 public class HelloWorldTest {
 9     
10     public String invokeRemoteFuc() {
11         //       
12         String endpoint = "http://localhost:8080/WebServiceTest/services/HelloWorld";
13         String result = "call failed!";
14         Service service = new Service();
15         Call call;
16         
17         try {
18             call = (Call) service.createCall();
19             call.setTargetEndpointAddress(endpoint); 
20             //       
21             call.setOperationName("printStr"); 
22             
23             //      
24             call.addParameter("name",   //    
25                     XMLType.XSD_STRING, //     :String
26                     ParameterMode.IN);  //     :'IN' or 'OUT'
27 
28             //        
29             call.setReturnType(XMLType.XSD_STRING); //      :String
30             String name = "Alexia";
31             result = (String) call.invoke(new Object[] { name });//     
32         } catch (ServiceException e) {
33             e.printStackTrace();
34         } catch (RemoteException e) {
35             e.printStackTrace();
36         }
37         
38         return result;
39     }
40 
41     //   
42     public static void main(String[] args) {
43         HelloWorldTest test = new HelloWorldTest();
44         String result = test.invokeRemoteFuc();
45         System.out.println(result);
46     }
47 
48 }
     第六ステップ:テスト:Hello World Test---Run as-Java aplication、もしコンソールがHello Alexiaを正しく出力することを発見したら、テストの成功を説明します. 
     注意:1、メソッド名とパラメータ名を設定する場合は、呼び出しられたWebServiceと一致していなければなりません.              2、伝達のパラメータはObject配列にカプセル化する必要があります.              3、遠隔呼び出し経路endpointは第4ステップのテストでEndPointsです.