概要
WSDLから コードを自動生成し、Webクライアントを作成する => * wsdl2javaを利用する
前提条件
* 以下のように環境を設定しておくhttp://blogs.yahoo.co.jp/dk521123/31944955.html
* 以下を行い、サービスを立ち上げておくことhttp://blogs.yahoo.co.jp/dk521123/31984636.html
wsdl2javaコマンドオプション
-uri ... WSDLドキュメントの場所(リモートURLでも、ローカルファイルのパスでも可) -s ... 同期コードの生成 -o ... 出力先を指定する。 ■オプション -u ... 生成時にソースを別にする 詳細は下記の関連記事を参照のこと。http://blogs.yahoo.co.jp/dk521123/33842530.html
大まかな手順
[1] wsdl2javaコマンドにより、クライアント側スタブを生成する [2] Javaプロジェクトを作成し、手順[1] のファイルを追加する [3] Axis2のjarファイルを追加 [4] mainメソッドを実装し、ビルドする
手順・詳細
[1] クライアント側スタブを生成
コマンド構文
wsdl2java.bat -uri [wsdlのアドレス] -s -o [出力先]
例
コマンドプロンプトで以下を実行cd C:\pg\axis2-1.6.2\bin wsdl2java.bat -uri http://localhost:8080/Axis2Sample/services/HelloWorld?wsdl -s -o outclient
例2
コマンドプロンプトで以下を実行。事前にXSDLファイル「HelloWorld.xsdl」を「C:\pg\axis2-1.6.2\bin」に保存しておく。また、ソースを別々にしているcd C:\pg\axis2-1.6.2\bin wsdl2java.bat -uri HelloWorld.xsdl -u -s -o outclient
出力結果(スタブ)
build.xml :Ant用ファイル srcフォルダ :スタブコード
[2] プロジェクトにスケルトンコードを追加
[2-1] Eclipseで、「File]-[New]-[Java Project]でプロジェクトを追加(「HellowWorldClient」とする) [2-2] 追加したプロジェクト「HellowWorldServer」を右クリックし、[Import]-[General]-[File System]を選択 [2-3] Browseボタン押下し、wsdl2javaコマンドより生成したファイルを追加(例の場合「C:\pg\axis2-1.6.2\bin\outclient」) [2-4] 「Select All」ボタンを押下し、全てを選択(build.xml含む)し、「Finish」ボタン押下
[3]Axis2のjarファイルを追加
[3-1] C:\pg\axis2-1.6.2\libをEclipseの「HellowWorldClient」にドラッグ&ドロップ [3-2] プロジェクト「HellowWorldClient」を右クリックし、[Propaties]-[Java Build Path]-[Libralies]で 「Add External JARs」で手順[3-1]で追加したjarファイルを全て追加する
[4]mainメソッドを実装し、ビルドする
[4-1] mainメソッド用のクラスファイル(仮に「HelloWorldClient.java」)を追加する [4-2] mainメソッドを実装する(下記「サンプル」を参照のこと) [4-3] build.xmlを右クリックし、[Run As]-[Ant Build]を選択し、ターゲットを「jar.server」にして「OK」ボタン押下で、ビルドする [4-4] HelloWorldClientを右クリックし、[Run As]-[Java Application]を選択 → コンソールには「Hello, Bob」が表示される
サンプル
HelloWorldClient.java
package demo.webservices; public class HelloWorldClient { public static void main(String[] args) { try { HelloWorldStub stub = new HelloWorldStub( "http://localhost:8080/Axis2Sample/services/HelloWorld"); HelloWorldStub.SayHello request = new HelloWorldStub.SayHello(); request.setName("Bob"); HelloWorldStub.SayHelloResponse response = stub.sayHello(request); System.out.println(response.get_return()); } catch (Exception ex) { ex.printStackTrace(); System.err.println("\n\n"); } finally { } } }
トラブルシューティング
* SSL通信時でのエラー
「AxisFault: Connection has been shutdown: javax.net.ssl.SSLHandshakeException」が表示
http://blogs.yahoo.co.jp/dk521123/33014445.html参考文献
http://d0ec7852ef61.seesaa.net/article/114543361.htmlhttp://www.intra-mart.jp/download/product/v72_doc/iwp_iaf/development/im_web_service_prog_guide_v72.pdf
関連記事
Antで、WSDLファイルからソースの自動生成(クライアント・サーバー)を行う* 自動生成するのにいちいちコマンドを入力するのは面倒なのでAntを使用するための記事http://blogs.yahoo.co.jp/dk521123/34445295.html
Axis2 の自動生成のコマンドオプション - WSDL2Java / Java2WSDL -
http://blogs.yahoo.co.jp/dk521123/33842530.html
WSDL について ~知識編~
http://blogs.yahoo.co.jp/dk521123/folder/735280.html
WSDLから Webサービス/クライアントを作成時に発生したトラブル
http://blogs.yahoo.co.jp/dk521123/32009389.html
クライアント関連
WSDLから クライアントを作成するhttp://blogs.yahoo.co.jp/dk521123/31984636.html
Axis2 で、クライアント・スタブから、Cookie を設定する
http://blogs.yahoo.co.jp/dk521123/33122558.html
Axis2 のクライアント・スタブで、タイムアウト時間を変更するには...
http://blogs.yahoo.co.jp/dk521123/33139822.html