これまで、標準的なWARファイルをSSAPに準拠したWebモジュールへと改良する手順を実践してきたわけだが、ここで一旦パッケージングに関するまとめを行っておきたい。

Java EE標準のWARファイルをSSAP準拠のWebモジュールに変更するためには、以下の3つの形態を経ることになる。

  1. 標準的なWAR(Standard WAR) …… 言わずと知れた、Java EE標準のWARファイル

  2. 共有ライブラリを使用するWAR(Shared library WAR) …… WEB-INF/libにあるJARファイルを除去し、OSGiに準拠した形で依存関係を管理したWARファイル

  3. OSGiによりモジュラリティを高めた形式 …… 一枚岩として作成されているアプリケーションを、複数のバンドルに分割してモジュール性を高める。そうして分割されたアプリケーションを一つにまとめてデプロイするための単位がPARファイルである

Hibernateアプリケーションを変換するとなると

では、上記の手順を、具体的な例を使って確認していこう。

例えば、Hibernateを使用し、単一のWARファイルとしてデプロイされるWebアプリケーションがあったとする。

このWebアプリケーションをSSAPに移行するなら、まずOSGiを利用してHibernateへの依存関係を整理する(上の手順2)。Hibernateなど、よく知られたライブラリのOSGiバンドルはこちらのページから検索、入手することができる。

HibernateのOSGiバンドルを検索

入手したバンドル(com.springsource.org.hibernate-3.2.6.ga.jarなど)をアプリケーションから利用できるようにするには、「SSAPのルートディレクトリ/repository/bundles/usr」にコピーするだけだ。これで、SSAP上にデプロイされるアプリ全てがHibernateを利用できるようになる。そして、WARのマニフェストファイルにHibernateへの依存関係を定義すればよい。

こうして依存関係の整理が終わったら、さらに手順3を行うことで、アプリケーションのモジュール性を高めていく。

SSAPのドキュメントやサンプルは、ドメイン駆動設計を意識した、ドメイン/リポジトリ/サービスなどのモジュールと、Web層に分割している場合が多いようだ。

モジュールの分割例(プログラマーズ・ガイドより引用)

こうしてアプリケーションをバンドルに分割したら、OSGiのメタデータを利用して依存関係を定義し、PARファイルにアーカイブすれば完成だ。