minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

JBossにdeployするアプリケーションファイルの構成内容を説明します。

jarファイル

全ての基準となるのが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全てのアプリケーションに当てはまります。

warファイル

基本的には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参照の定義を記述します。

earファイル

前述した二つとは異なるファイル構成になっています。
具体的には、複数の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ファイルを使用する事を宣言する必要があります。

sarファイル

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です。