Java

ApacheAXISとJAX-WSでデータバインディング

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 ディレクトリで下記を実行します。

次に JAX-WS のスタブコードを確認してみます。

現在の JAX-WS の最新バージョンは 2.1.3 のようです。jar で提供されるので、下記のコマンドで解凍して下さい。

実行方法は、JAX-WS の jaxws-ri/bin ディレクトリで下記を実行します。

wsimport.bat -s [出力先ディレクトリ] [WSDLファイル]

次回、Amazon の Web サービスなどをサンプルに試してみたいと思います。