第6章 デプロイメント

JBoss Enterprise Application Platform にアプリケーションをデプロイするには、 アプリケーションを $JBOSS_HOME/server/default/deploy ディレクトリにコピーします。defaultallminimal などの他のサーバープロファイルに置き換えることができます (サーバープロファイルについては後ほど説明します)。JBoss Enterprise Application Platform は常に deploy ディレクトリをスキャンし、 新しいアプリケーションや既存アプリケーションへの変更を検知します。これにより、 JBoss Enterprise Application Platform を実行したままアプリケーションのホットデプロイメントをオンザフライで実行できます。

6.1. デプロイ可能なアプリケーションのタイプ

JBoss Enterprise Application Platform 4.x には、 指定のデプロイメントタイプを処理するデプロイヤーがあり、それがデプロイメントを処理する唯一のデプロイヤーでした。 JBoss Enterprise Application Platform 5 では、 メタデータよりランタイムコンポーネントを作成するデプロイヤーによって処理されるまで複数のデプロイヤーがデプロイメントに関連するメタデーターを変換します。
デプロイメントには、 コンポーネントのメタデータがデプロイメントに追加されるようにする記述子が含まれなければなりません。JBoss Enterprise Application Platform のデフォルトでデプロイヤーが存在するデプロイメントタイプは次の通りです。
WAR
WAR アプリケーションアーカイブ (例、 myapp.war) は JAR ファイル内に Java EE Web アプリケーションをパッケージングします。これには、 サーブレットクラス、 ビューページ、 ライブラリ、さらには web.xmlfaces-config.xmljboss-web.xml といった、WEB-INF の配備記述子が含まれます。
EAR
WAR アプリケーションアーカイブ (例、 myapp.war) は JAR ファイル内に Java EE 企業向けアプリケーションをパッケージングします。 通常、Web モジュールの WAR ファイル、 EJB モジュールの JAR ファイル、 application.xml や jboss-app.xml などの META-INF 配備記述子が含まれます。

注記

EJB3 仕様に従い、永続ユニットがEAR ファイルの外部にあり、bean がこの永続ユニットをEAR内に投入しようとすると、EARへの永続ユニットのデプロイは失敗します。この仕様にあわせ、EARファイル内にパッケージされた永続ユニットをデプロイする必要があります。
しかし、JBoss EAP 永続ユニットはEAR外でも存在することはできます。この動作を可能にするには、該当の JBoss AS サーバープロファイルのdeployers/ejb3.deployer/META-INF/jpa-deployer-jboss-beans.xml ファイルにあるPersistenceUnitDependencyResolver beanのbean クラスを変更します。
<!--
Can be DefaultPersistenceUnitDependencyResolver for spec compliant resolving,
InterApplicationPersistenceUnitDependencyResolver for resolving beyond EARs,
or DynamicPersistencePersistenceUnitDependencyResolver which allows configuration via JMX.
-->
<bean name="PersistenceUnitDependencyResolver" class="org.jboss.jpa.resolvers.DynamicPersistenceUnitDependencyResolver"/>
このbean のデフォルト値はDynamicPersistenceUnitDependencyResolverです。このリボルバーにより、仕様に準拠した動作を指定することができ、JMX Console の MBean からこれらの動作を追加で監視可能です。仕様に準拠しないJBoss 変数を使うには、bean をInterApplicationPersistenceUnitDependencyResolverに設定します。
JBoss Microcontainer
JBoss Microcontainer (MC) Bean アーカイブ (拡張子は .beans や .deployer など) は、 META-INF/jboss-beans.xml 記述子と共に POJO デプロイメントを JAR ファイルにパッケージ化します。 この形式は、 JBoss Enterprise Application Platform のコンポーネントデプロイヤによって頻繁に使用されます。
*-jboss-beans.xml は MC Bean 定義を使用してデプロイすることができます。 deploy ディレクトリまたは lib ディレクトリ内に適切な JAR ファイルがあれば、 スタンドアローン XML を使用して MC Bean をデプロイすることができます。
SAR
SAR アプリケーションアーカイブ (myservice.sar など) は、JBoss サービスを JAR ファイルにパッケージ化します。 主に、 MC Beam スタイルのデプロイメントサポートのために更新されていない JBoss Enterprise Application Platform の内部サービスによって使用されます。
*-service.xml は MBean サービス定義を使用してデプロイすることができます。 deploy ディレクトリまたは lib ディレクトリ内に適切な JAR ファイルがあれば、 XML ファイルに指定された MBean を起動することができます。 JMS キューなど、 POJO スタイルのデプロイメントサポートのために更新されていない JBoss Enterprise Application Platform の内部サービスをデプロイする方法になります。
DataSource
*-ds.xml ファイルは外部データベースとの接続を定義します。 これにより内部 JNDI を介して JBoss Enterprise Application Platform 内の全てのアプリケーションとサービスによるデータソースの再利用が可能になります。
HAR
HAR ファイルは、アプリケーション用に Hibernate オブジェクトを定義します。これは SAR ファイルに似ていますが、META-INF ディレクトリにHibernate クラスとマッピングファイル、*-hibernate.xml 配備記述子を含みます。

注記

*-hibernate.xml は、jboss-service.xml と同じ形式を取ります。

例6.1 Hibernate 配備記述子 (*-hibernate.xml)

<hibernate-configuration xmlns="urn:jboss:hibernate-deployer:1.0">
  <session-factory name="java:/hibernate/SessionFactory"
    bean="jboss.test.har:service=Hibernate,testcase=TimersUnitTestCase">
    <property name="datasourceName">OracleDS</property>
    <property name="dialect">org.hibernate.dialect.OracleDialect</property>
    <depends>jboss:service=Naming</depends>
    <depends>jboss:service=TransactionManager</depends>
  </session-factory>
</hibernate-configuration>
*AR
EJB が含まれるJAR ファイルや、 他のサービスオブジェクトを直接 JBoss Enterprise Application Platform にデプロイすることもできます。 JAR ファイルとして認識される拡張子の一覧は、 conf/bootstrap/deployers.xml の JARStructure Bean コンストラクタセットに指定されます。

6.1.1. 展開デプロイメント

WAR、 EAR、MC Bean、 SAR のデプロイメントパッケージは、 META-INF や WEB-INF のようなディレクトリ内の特殊な XML 配備記述子を持つ JAR ファイルです。 JBoss Enterprise Application Platform により、 これらのアーカイブを JAR ファイルではなく展開ディレクトリとしてデプロイすることができるようになります。 これにより、 アプリケーション全体を再デプロイすることなくオンザフライで Web ページなどに変更を加えることができます。 サーバーを再起動せずに展開ディレクトリを再デプロイする必要がある場合は、配備記述子 (WAR 内での WEB-INF/web.xml、 EAR 内での META-INF/application.xml) を touch してタイムスタンプを更新します。