スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Java] Axis2でWSDLからSOAPサーバーを作成&ヨタ

前回、Axis2のWSDL2Javaからスタブ(クライアント)を作る方法を記事にしたのですが、
スケルトン(サーバー)を作る方法もあったので掲載しておきます。

前回同様、Axis2を展開したフォルダの中にあるbin/wsdl2java.batを使用します。
コマンドプロンプト(XPの場合)で以下のように入力します。

>[~Axis2を展開したフォルダ]\bin\wsdl2java.bat -uri [wsdlのアドレス] -s -ss -sd -ssi
例:>C:\axis2\bin\wsdl2java.bat -uri MyService.wsdl -s -ss -sd

ちなみにオプションの
-s・・・スケルトンの生成(省略するとスタブ)
-ss・・・サーバーサイドコード生成
-sd・・・service.xmlの生成
-u・・・スタブ生成時にサービスとバインディングのソースを別にする

。。。らしいです(・ω・)
※-uをオプションに付けないクラスは一つのソースファイルに大量の内部クラスが出来ます。
 付けると大量のソースファイルができます。(WSDLの内容にもよるけど)

これを実行するとsrcフォルダに大量のJavaソースと(WSDLの内容にもよりますが)
[サービス名]Skeleton.java(例でいくと「MyServiceSkeleton.java」)が出来るのですが、
その[サービス名]Skeleton.javaに内容を実装⇒Antビルドでaar化⇒デプロイでおk。。。みたいな。

詳細は↓に秀逸な記事があるのでそちらを見てくれればいんでないかと。
http://d.hatena.ne.jp/modalblue/20080817/1218971413

あと最近仕事で使ってみて気づいたんですが、Axis2でスタブクラスを作成した際に
WSDL内にAbstractなエレメントがあると、スタブ化に失敗する事が。。。(;´Д`)
(Abstractの方はちゃんとクラス化されるものの、実装エレメントがクラス化されないと言うか)
当初はエラーの原因がわからず、かなり困惑したのですが、↑が原因とわかり
スタブソースの改変を余儀なくされました。
(※追記)Axis2のバージョンが1.4.1の時に起きました。1.5.2で作ったスタブは大丈夫でした。


最後にお便利ツールの紹介を。
Microsoftで配布している「MSSOAP(SOAP Toolkit 3.0 )」をマシンにインスコすると
「Trace Utility」ってのも一緒にインスコされるのですが、
これを使うとSOAPの送受信の内容をモニタする事ができます。

例えば、Listenのポート[8080]でForward Toのホスト[www.yahoo.co.jp]ポート[80]とかにしておいて
http://localhost:8080/にアクセスすると、下図のような感じで(SOAPに限らず)
送受信した内容を見ることができます(素敵すぐる)。
(要はFoward Toで指定したホスト+ポートへのアクセスをlocalhost+Listenポートにスワップする)
先に書いたエラーの原因追及等にも役立って、大変重宝しています(´ω`)

あ、ちなみにWin鯖のWebサービスにAxis2で作成したStubクラス(クライアント)を使用して
アクセスする場合
に、以下の画像のようにちゃんと表示されない場合は、
Stubオブジェクトを以下のように設定をすると、ちゃんと表示されるようになります。

MyServiceStub stub = new MyServiceStub("http://localhost:90/AxisTest/services/MyService/");
stub._getServiceClient().getOptions().setProperty(
  org.apache.axis2.transport.http.HTTPConstants.CHUNKED,
  org.apache.axis2.Constants.VALUE_FALSE);


関連記事
スポンサーサイト

Pagination

Trackback

Trackback URL

http://morado106.blog106.fc2.com/tb.php/44-530a8b1b

Comment

Post Your Comment

コメント登録フォーム
公開設定

Utility

プロフィール

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。