1。例1(主に[2]を参照)
1.1。システム機能:
プラス、減算、乗算、分割などの操作を含む計算サービスCalculatesErviceを開発します。
1.2。開発前の準備:
eclipse-jeeをインストールします。
axis2の最新バージョンをダウンロードすると、URLはhttp://axis.apache.org/axis2/java/core/download.cgiです。ディレクトリ内のファイル構造は次のとおりです。
1.3。開発前構成:
Eclipseのメニューバーでは、ウィンドウ - > fearthences-> web Service-> axis2の容赦、axis2ランタイムの位置にあるaxis2減圧パッケージの場所を選択します。設定後、[OK]をクリックします。 (写真に示されているように)
1.4。 Webサービスの開発:
(1)新しいJavaプロジェクトを作成し、「webservicetest1」と名付けます
(2)新しいクラスを作成し、「calculateservice」という名前を付けます。完全なコードは次のとおりです。
パッケージedu.sjtu.webservice; /***計算機操作* @author rongxinhua*/public class calculateservice {//追加public float plus(float x、float y){return x + y; } //縮小パブリックフロートマイナス(float x、float y){return x -y; } //複数のパブリックフロート乗算(float x、float y){return x * y; } //配分public public float divide(float x、float y){if(y!= 0){return x /y; } else return -1; }}(3)「webservicetest1」プロジェクトでnew->その他、「Webサービス」の下で「Webサービス」を見つけます。
(4)次のステップ(次のステップ)、表示されるWeb Servicesオブジェクトボックスで、[サービスの実装で[参照]をクリックし、[クラス]オブジェクトボックスを参照して、作成したcalculateserviceクラスを見つけます。 (下の図)。 [OK]をクリックすると、[Webサービス]ダイアログボックスに戻ります。
(5)[Webサービス]ダイアログボックスで、Webサービスタイプのスライダーを「開始サービス」の位置に調整し、クライアントタイプのスライダーを「テストクライアント」の位置に調整します。
(6)Webサービスタイプのスライダー図の右側に「構成」があります。下のオプションをクリックして[Service Deployment Configurationオブジェクト]ボックスを入力し、対応するサーバー(ここでTomcat6.0を使用します)とWebサービスランタイム(Apache axis2を選択)を選択します。
(7)[OK]をクリックした後、[Webサービス]ダイアログボックスに戻ります。同様に、クライアントタイプのスライダーの右側にも「構成」があり、対応する設定を実行する必要があります。手順は上記と同じです。完了後、次は - >次の準備ができています。 Axis2 WebサービスJava Bean構成の入力、下の図に示すように、次のようにデフォルトのservices.xmlを生成することを選択します。
(8)[サーバーの起動]ダイアログボックスに到着すると、[サーバーを開始]ボタンがあります(以下に示すように)。それをクリックして、Tomcatサーバーを起動します。
(9)スタートアップを待った後、「次 - >次」をクリックして、すべてがデフォルトで実行され、最後に[終了]をクリックします。最後に、次のインターフェイスが表示されます。(Web Service Explorer)、Webサービスをテストできます。 (ブラウザで開く場合は、次のアドレスを使用してください:http://127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp?org.eclipse.wst.ws.explorer=3)。下の図に示すように:
注:ブラウザでWebサービスエクスプローラーを開く(WebService ExplorerがEclipseで閉鎖される場合があり、この方法で開くことができます)
最初のログインアドレス:http:///127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp。次に、Webページの右上隅にあるWeb Service Explorerタブを選択します。次に、WSDLアドレスを入力します:http:// localhost:8080/webservicetest1/services/calculateservice?wsdl。このWSDLアドレスは、サービスをリリースしたばかりのWSDLです。次の図に示すように、[GO]をクリックします。
次に、次のインターフェイスを確認できます。
(10)テストは比較的簡単です。たとえば、「Plus」操作を選択します(calculatesErvicesOAP11Bindingである必要があります)。次の図が表示されます。 xの入力ボックスに1を入力し、yの入力ボックスに2を入力し、[go]をクリックすると、結果3.0がステータスバーに表示されます。他の方法のテストは似ています。結果は上の図に示されています。
1.5。 CalculateServiceクライアントはプログラムを呼び出します
追加、減算、乗算、分割の方法を定義し、これらの方法をサービスとして公開しました。これで、これらのサービスに電話することだけです。次のコードに示されているクライアントコールプログラム:calculateservicetest.java
パッケージedu.sjtu.webservice.test; javax.xml.namespace.qnameをインポートします。 org.apache.axis2.axisfaultをインポートします。 org.apache.axis2.addressing.endpointreferenceをインポートします。 org.apache.axis2.client.optionsをインポートします。 org.apache.axis2.rpc.client.rpcserviceclientをインポートします。 public class calculateservicetest { / ** * @param args * @throws axisfault * / public static void main(string [] args)throws axisfault {// dodo auto-fienated method stub // rpc method rpcserviceclient serviceclient = new rpcserviceClient();オプションオプション= serviceClient.getoptions(); // WebServiceを呼び出すURLを指定しますEndPoInTrerence TargetePr = new EndPoinTrerence( "http:// localhost:8080/webservicetest1/services/calculateservice"); options.setto(targetepr); //コンピューター内のWSDLファイルのメソッドと名前空間を指定します:edu.sjtu.webservice。 qname opaddentry = new QName( "http://webservice.sjtu.edu"、 "plus"); // addqname opaddentryminus = new QName( "http://webservice.sjtu.edu"、 "minus"); // qname( "http://webservice.sjtu.edu"、 "倍数"); // qname opaddentrydivide = new qname( "http://webservice.sjtu.edu"、 "divid"); opaddentryargs = new Object [] {1,2}; // Plusメソッドクラス[] classes = new class [] {float.class}の返品値のデータ型を指定します; //プラスメソッドを呼び出して、メソッドシステムの返品値を出力しますsystem.out.println(serviceclient.invokeblocking(opaddentry、opaddentryargs、classes)[0]); System.out.println(ServiceClient.InvokeBlocking(opaddentryminus、opaddentryargs、classes)[0]); System.out.println(serviceclient.invokeblocking(opaddentrymultiply、opaddentryargs、classes)[0]); system.out.println(serviceclient.invokeblocking(opaddentrydivide、opaddentryargs、classes)[0]); }}実行結果:
3.0
-1.0
2.0
0.5
2。例
2.ヘロセルビス
(1)最初にサービス方法を定義します。コードは次のとおりです。
パッケージedu.sjtu.webservice; public class helloservice {public string sayshellonew(){return "hello"; } public string sayshellotopersonnew(string name){if(name == null){name = "Nobody"; } "Hello" + nameを返します。 } public void updatedata(string data){system.out.println(data + "updated。"); }} (2)この方法をサービスとして公開する例1を参照してください。
(3)WebService(メインリファレンス[5])を呼び出すためにクライアントコードを書き込む
この例と他の例の最大の違いはこちらです。通常、他の例は、今すぐサービスWSDLに基づいてクライアントスタブを生成し、スタブを介してサービスを呼び出す必要があります。この方法は比較的単一のようです。クライアントは、サービスにアクセスするためにスタブスタブを必要とする必要がありますが、これは非常に不公平です。この例のクライアントは、スタブ方式を使用しませんが、一般的な呼び出し方法を実装しており、サービスにアクセスするためにクライアントスタブを必要としません。 Web Servceアドレス、操作名、パラメーター、および関数のリターンタイプを指定する必要があります。コードは次のようになります:
helloservicetest2.javapackage edu.sjtu.webservice.test; javax.xml.namespace.qnameをインポートします。 org.apache.axis2.axisfaultをインポートします。 org.apache.axis2.addressing.endpointreferenceをインポートします。 org.apache.axis2.client.optionsをインポートします。 org.apache.axis2.rpc.client.rpcserviceclientをインポートします。パブリッククラスHelloServicetest2 {private rpcserviceclient ServiceClient;プライベートオプションオプション。 Private EndpointReference Targetepr; public helloservicetest2(string endpoint)はaxisfaultをスローします{serviceclient = new rpcserviceclient(); options = serviceclient.getoptions(); Targetepr = new endpointrenereference(endpoint); options.setto(targetepr); } public object [] invokeop(String TargetNamesSpace、String Opname、Object [] Opergs、class <?> [] opreturntype)throws axispault、classNotFoundException {//操作qname opqname = new QName(ターゲットネームズスペース、opname); //戻り値を設定します// class <? //操作を渡す必要があるパラメーターは、すでにパラメーターに与えられています。ここでは、return serviceclient.invokeblocking(opqname、opargs、opreturntype)を直接呼び出します。 }/** * @param args * @throws axisfault * @throws classnotfoundexception */public static void main(string [] args)throws axispault、classnotfoundexception {// todo auto-enerated method final string endpointreference = "http:// localhost:8080/weberservecet1/ final String targetNamesPace = "http://webservice.sjtu.edu"; helloservicetest2 client = new helloservicetest2(endpointreference); string opname = "sayhellotopersonnew"; object [] opargs = new object [] {"My Friends"}; class <? Object [] response = client.invokeop(targetnamespace、opname、opargs、opreturntype); System.out.println(((string [])response [0])[0]); }}プログラムを実行し、[AS-> Javaアプリケーション]を[実行]をクリックします。コンソールポートの出力は次のとおりであることがわかります。こんにちは、私の友人で、クライアントの呼び出しが成功していることを示しています。この例の最大の違いと利点は、クライアントの呼び出し方法、つまりサービスコールを開始する方法に反映されています。クライアントのスタブスタブスタブよりも少し多くのコードがありますが、この方法は統合されており、クライアントが多くのクラスを持っているという問題を解決するスタブスタブコードの生産を必要としません。読者がこれらのコードをさらにカプセル化する場合、通話方法は単純で、関連するパラメーターを渡すだけで、サービスコールの利点をよりよく示しています。さらに、この方法はよりシンプルで明確であり、一目で特定の意味を伝えることができます。スタブクラスのメカニズムを作成する必要はありません。
(4)クライアントの呼び出しサービスのコードを書き直します
(3)以下に記載されているクライアントアプリケーションコードは、書き込みが少し複雑です。サービスプログラムを呼び出す上記のクライアントは書き直されていますが、これははるかに簡単です。コードは次のとおりです。
helloservicetest.javaimport javax.xml.namespace.qname; org.apache.axis2.axisfaultをインポートします。 org.apache.axis2.addressing.endpointreferenceをインポートします。 org.apache.axis2.client.optionsをインポートします。 org.apache.axis2.rpc.client.rpcserviceclientをインポートします。 public class helloservicetest {public static void main(string args [])throws axisfault {// rpc serviceclient = new rpcserviceClient();オプションオプション= serviceClient.getoptions(); // WebServiceを呼び出すURLを指定しますEndPoInTreference TargetePr = new EndPoinTrerence( "http:// localhost:8080/webservicetest1/services/helloservice"); options.setto(targetepr); //呼び出されるsayhellotopersonメソッドとwsdlファイルの名前空間qname opaddentry = new qname( "http://webservice.sjtu.edu"、 "sayhellotopersonnew"); // sayhellotopersonメソッドオブジェクトのパラメーター値を指定します[] opaddentryargs = new object [] {"xuwei"}; // sayhellotopersonメソッドがvalue class [] classes = new class [] {string.class}を返すデータ型のクラスオブジェクトを指定します。 // sayhellotopersonメソッドを呼び出して、メソッドシステムの返品値を出力します。 }}上記のコンテンツを通じて、Eclipse+WebServiceの簡単な開発例を紹介します。それがすべての人に役立つことを願っています!