JBossにdeployするアプリケーションファイルの構成内容を説明します。
全ての基準となるのがjarファイルです。
構成内容はいたって簡単です。
以下に例を挙げます。
.
|-- META-INF
| |-- ejb-jar.xml
| |-- jboss.xml
| `-- jbosscmp-jdbc.xml
|-- folder1
| |-- sample.txt
| `-- sample.jpg
`-- org
`-- limy
|-- Test.class
`-- ejb
`-- EjbTest.class
通常のJavaアプリケーションとほとんど同じです。
ルート直下にリソースとクラスファイルを配置します。
唯一異なるのがMETA-INFディレクトリです。
この中に各設定ファイルを格納することになりますが、必要でなければ作成しなくても構いません。
jarファイルを $JBOSS_DIST/server/default/deploy ディレクトリ直下に格納すれば
自動的にデプロイ作業が行われます。
ここでデプロイした各Javaクラスは、他の全てのJBossアプリケーションから使用することが可能になります。
これは一見便利ですが、異なるアプリケーションで
異なるバージョンの同一クラスを使用できないという意味でもあります。
つまり、パッチ当て等によるクラスの上書きも出来ません。
これはjarファイルに限らずJBoss全てのアプリケーションに当てはまります。
基本的にはjarファイルと同じです。
以下に例を挙げます。
. |-- META-INF | `-- ejb-jar.xml |-- WEB-INF | |-- web.xml | |-- jboss-web.xml | |-- struts-bean.tld | |-- struts-config.xml | |-- lib | |-- struts.jar | `-- struts-legacy.jar |-- org | `-- limy | |-- Test.class |-- folder1 | `-- index.jsp `-- index.jsp
jarファイルと異なるのは、WEB-INFディレクトリの存在です。
この中には、必須ファイルとして web.xml を配置します。
そして必要に応じて、libディレクトリ以下にjarファイルを格納します。
jarファイルの内容は、このアプリケーションからのみ使用するJavaクラス群です。jboss-web.xml はオプションです。
このファイルには、コンテキストルートの設定やJNDI参照の定義を記述します。
前述した二つとは異なるファイル構成になっています。
具体的には、複数のjar(sar)ファイル(と唯一のwarファイル)をまとめたファイルになります。
以下に例を挙げます。
. |-- META-INF | |-- application.xml | `-- jboss-app.xml |-- context1.jar |-- context2.jar |-- mbean1.sar |-- web-context.war
ルート階層に配置できるのはMETA-INFディレクトリとjar(war)ファイルのみです。
META-INFディレクトリの中に配置できるファイルは、
application.xml / jboss-app.xml です。
これらのファイルの中で、
ルート直下に配置したjar/sar/warファイルを使用する事を宣言する必要があります。
MBean(Managed Bean)を利用するときに使います。
ファイル構成の例を以下に例を挙げます。
. |-- META-INF | `-- jboss-service.xml |-- org | `-- limy | `-- mbean | |-- Hello.class | `-- HelloMBean.class
jboss-service.xml というファイルが必須になっています。
ここには、MBeanの定義などを記述します。
なお、各classファイルはjarにまとめることも可能です。
今まで紹介したファイルは全て、展開してデプロイするすることも可能です。
JBossに最初からデプロイされているオブジェクトのほとんどはこの形式になっています。
この形式の利点は、
等が挙げられます。一方、最大の欠点は
「classファイルを修正してもリロードされない」事が挙げられます。
よって、jspの修正を頻繁に行いたい時などには便利ですが
EJBを含むJavaクラス開発のデバッグには使えないというのが僕の印象です。
展開例を挙げます。基準ディレクトリは $JBOSS_DIST/server/default/deploy です。
.
`-- sample.jar
|-- META-INF
| |-- ejb-jar.xml
|-- folder1
`-- org
`-- limy
要するに、今までjarファイルにまとめていたものを「jarファイルの名前をディレクトリ名」にして
そのディレクトリ直下にjarファイルの中身を解凍すれば良いのです。
一つ注意することは、ディレクトリ名を「sample」ではなく「sample.jar」にする事です。
warやear、sarも同様の手順で展開すればOKです。