Java

JAXBでデータバインディング

Java で XML モデルからオブジェクトモデルへのマッピングをする技術として JAXB(The Java Architecture for XML Binding)があります。

以前、JAX-WS についても調べましたが、その時の記事は以下になります。

ApacheAXISとJAX-WSでデータバインディングJava で SOAP 通信を簡単に実装しようとすると、Apache AXIS2 か JAX-WS(Java API for XML W...

JDK1.6(J2SE1.6)からは JAXB2.0 が搭載されています。

しかし、この JAXB に xsd ファイルを食わせると、JAXB 1.0 と 2.0 で生成されるコードが大きく違います。

今回はそのあたりを含めて JAXB について調べたことをまとめてみます。

JAXBでXMLからJavaのクラスを生成

例えば、アマゾン(Amazon)で提供されている商品データの XML データ(XSD形式)で試してみると、JAXB 2.0 はコードにアノテーション(annotation)が使用されていて生成されるクラスファイルも少数です。

逆に JAXB 1.0 では大量のクラスファイルが生成されます。

ってことは、JAXB 2.0 は JDK1.5(J2SE1.5)以上じゃないと使えないってことなのかな・・・。

さらに、JAXB 2.0 はオブジェクトモデルから XML への逆生成も可能です。

この辺の技術は、Apache AXIS2 や JAX-WS, SAAJ などの技術も含めていろいろ調べてみようと思います。

ApacheAXIS2を使う

ここから Apache AXIS2 のデータバインディングのお話です。

AXIS2 は Java の SOAP のエンジン部分を得意とするモジュールです。

クライアント側では WSDL ファイルからスタブ的な Java ソースを生成してくれるのですが、その方法の中に adb(Axis Data Binding) や xmlbeans などのスタブ生成方法があります。

では、早速、スタブコードを生成するクライアント側で使用するモジュールと、サーバサイド側の AXIS エンジンのモジュールをダウンロードします。

AXIS2のインストール

では、インストールしてみます。

上記の URL から以下をダウンロードしていることを前提とします。

axis2-1.3-bin.zip
axis2-1.3-war.zip

今回は AXIS エンジンの起動までをまとめてみました。