さて、Java EE標準のプログラミングモデルを経験したことのある方であれば、EAR(Enterprise ARchive)形式でのパッケージングを理解しておられる方も多いだろう。WebアプリケーションやEJB、ライブラリJARなどをひとまとめにしてデプロイするためのアーカイブ形式だ。
SSAPにも、EARと同様の目的で、アプリケーションの境界を定めるためのアーカイブ形式が存在する。それがPAR(Platform ARchive)形式と呼ばれるものだ。
PARはやはりJAR形式のファイルで、以下のような特徴を持つ。
- マニフェストファイルに専用のヘッダを持つ
- Webモジュールを含む、OSGiバンドル(JARファイル)が複数格納される
- PARを構成するバンドルを列挙した、par.xmlというファイルが必要
たったこれだけのことだ。
では、先ほどのHello WebモジュールをPARにパッケージングし、デプロイしてみよう。以下のようなファイル構造を持つJARファイルを作成し、ファイル名を「hello.par」とする。
hello.par/
META-INF/
MANIFEST.MF
hello.jar
par.xml
PARファイルのマニフェストファイルには以下のように、アプリケーションの名前やバージョン、説明を表す特殊なヘッダが含まれる。
Manifest-Version: 1.0
Application-SymbolicName: hello-par
Application-Version: 1.0.0.RELEASE
Application-Name: hello-par
Application-Description: hello application
そしてpar.xmlには、アプリケーションを構成するバンドルの名称(マニフェストファイルのBundle-SymbolicName)を列挙する。ここではWebモジュールが一つ含まれるのみだ。
<?xml version="1.0" encoding="UTF-8"?>
<com.springsource.platform.ide.par:Par xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.springsource.platform.ide.par="http:///com/springsource/platform/ide/par.ecore">
<bundle symbolicName="HelloWebBundle"/>
</com.springsource.platform.ide.par:Par>
この「hello.par」ファイルも、pickupディレクトリを利用してホットデプロイを行うことができる。先ほどと同じく、ブラウザから「http://localhost:8080/helloWebModule」にアクセスして結果を確認しよう。