Java で SOAP 通信を簡単に実装しようとすると、Apache AXIS2 か JAX-WS(Java API for XML Web Services)が思い付く。
この 2 つで大きく違うのは、JAX-WS が J2EE を使うので、Tomcat 上では動かせないということ。
JAX-WSを利用する
そこで、JAX-WS を使うのであれば、JBoss や OracleAS 10g などの J2EE に対応したアプリケーションサーバーを使うことになります。
Tomcat はバージョン 6 が最新になっていて、Apache2.2 との連携が強化されていて興味あっただけにちょっと残念。
まあ、Apache AXIS2 を使えばいいのですが・・・。
JDK も 1.6 が出てますが、主流は 1.5 みたいですね。1.4 も根強くまだまだ残ってるようですが。
スタブコード
AXIS2の wsdl2java で生成されるスタブコードは、ADB, xmlbeans, jaxbri, jaxme, jibx の形式が選択できます。
現在の AXIS2 の最新バージョンは 1.3 のようです。
(今回は手元にある AXIS2 1.2 で試します)
それぞれ、メリット・デメリットはあると思いますが、生成されるコードの特徴を簡単にまとめてみます。
(見た目だけの判断ですので間違いもあるかも)
スタブコードの特徴
[ADB]
axis2.databinding.ADBBean をインタフェースに使用したスタブが生成されます。
[xmlbeans]
javax.xml パッケージをメインに構成されています。JDK1.5(Java5.0)から採用された、アノテーションなども使用されています。
[jaxbri]
それぞれのスタブに対してインタフェースが生成されます。また、SOAP 関連のクラスが大量に生成されます。
実行方法は、AXIS の bin ディレクトリで下記を実行します。
1 2 3 4 5 | [クライアント用スタブ生成] wsdl2java.bat -uri [WSDLファイル] [サーバ用スタブ生成] wsdl2java.bat -uri [WSDLファイル] -ssi -ss -sd -d [バインド名] ※-d 省力時はデフォルトで ADB になります |
次に JAX-WS のスタブコードを確認してみます。
現在の JAX-WS の最新バージョンは 2.1.3 のようです。jar で提供されるので、下記のコマンドで解凍して下さい。
1 | $ java -jar JAXWS2.1.3-20071218.jar |
実行方法は、JAX-WS の jaxws-ri/bin ディレクトリで下記を実行します。
wsimport.bat -s [出力先ディレクトリ] [WSDLファイル]
次回、Amazon の Web サービスなどをサンプルに試してみたいと思います。