4.4. EJB3 サービスのパッケージとデプロイ

EJB3 bean クラスは通常の JAR ファイルでパッケージされます。標準設定ファイル (セッション bean は ejb-jar.xml、エンティティ bean は persistence.xml など) は、JAR の中にある META-INF ディレクトリにあります。JBoss AS ではスタンドアローンサービスとして、あるいはエンタープライズアプリケーションの一部 (EAR アーカイブ内) として、EJB3 bean をデプロイすることができます。この章では、この2つのデプロイメントオプションについて説明します。

4.4.1. EJB3 JAR のデプロイ

JAR ファイルを JBOSS_DIST/server/default/deploy/ ディレクトリに置くと、自動的にサーバーがピックアップし処理を行います。JAR ファイルに定義されている EJB3 bean はすべて、MyBean/local など JNDI 名を使ってサーバーの内部あるいは外部にデプロイされている他のアプリケーションにて利用できるようになります。この MyBean は、セッション bean の実装クラス名です。このデプロイメントは、JBOSS_DIST/server/default/ejb3.deployer/ の JBoss EJB3 デプロイヤーを使い行われます。デフォルトの EJB3 エンティティマネージャーを設定する際に前述した、META-INF/persistence.properties ファイルは、EJB3 デプロイヤーの中に置かれています。
EJB3 デプロイヤーは自動的にクラスパスの JAR をスキャンし、EJB3 アノテーションを検索します。EJB3 アノテーションを持つクラスが見つかった場合、EJB3 サービスとしてこれらのクラスをデプロイします。しかし、多数の JAR がデプロイされている大規模なアプリケーションをお使いの場合は、クラスパスにあるすべての JAR をスキャンするのに大変時間がかかります。JBOSS_DIST/server/default/ejb3.deployer/META-INF/jboss-service.xml ファイルでは、EJB3 デプロイヤーに EJB3 bean が含まれていないとわかっている JAR を無視するよう指示することができます。JBoss AS で同梱されている EJB 以外の JAR ファイルは jboss.ejb3:service=JarsIgnoredForScanning MBean サービスにすでにリストアップされています。

  ... ...
  <mbean code="org.jboss.ejb3.JarsIgnoredForScanning" 
         name="jboss.ejb3:service=JarsIgnoredForScanning">
      <attribute name="IgnoredJars">
         snmp-adaptor.jar,
         otherimages.jar,
         applet.jar,
         jcommon.jar,
         console-mgr-classes.jar,
         jfreechart.jar,
         juddi-service.jar,
         wsdl4j.jar,
         ... ...
         servlets-webdav.jar
      </attribute>
   </mbean>
  ... ...

サーバーがスキャンで時間を無駄にしないように、お使いのアプリケーションにある EJB3 以外の JAR をこのリストに追加することができます。こうすることで、場合によってはアプリケーションの起動時間が大幅に短縮されることがあります。