Apcoordinatorで作成したアプリケーションの動作を設定するパラメタを初期化パラメタと呼びます。初期化パラメタの一覧は13.3 初期化パラメタを参照してください。初期化パラメタの指定方法は2通りあります。
セションBeanクラスで指定
UjiSimpleStatelessBeanクラスまたはUjiSimpleStatefulBeanクラスのgetInitParametersメソッドをオーバーライドして、初期化パラメタをjava.util.Propertiesクラスに格納します。通常はこの方法を使用します。記述例は25.1.2 セションBeanの初期化パラメタの設定を参照してください。
デプロイメント記述で指定
エンタープライズBean環境のエントリとして初期化パラメタを指定します。エントリ名は"uji/xxx"とします。ここで、xxxは初期化パラメタ名です。エントリの型はjava.lang.Stringを指定します。セションBeanクラスとデプロイメント記述の両方で同じ初期化パラメタが指定された場合は、デプロイメント記述での指定が優先されます。Javaのソースを変更せずに初期化パラメタの値を変更したい場合にこの方法を使用します。記述例は33.2.2.1 デプロイメント記述 (ejb-jar.xml)を参照してください。
初期化パラメタuji.infoPathに設定ファイルフォルダを指定する必要があります。設定ファイルフォルダはApcoordinatorの設定ファイルを置くフォルダです。複数のセションBeanが同じ設定ファイルフォルダを共有することはできません。セションBeanごとに異なるフォルダとするために、以下を設定ファイルフォルダとして指定することを推奨します。
/[パッケージ階層]/[クラス名]_inf
ここで、[パッケージ階層]はセションBeanクラスのパッケージに沿ったフォルダ階層、[クラス名]はセションBeanクラスのクラス名です。例えば、セションBeanクラスがejboffice.ejb.OfficeBeanなら、設定ファイルフォルダは/ejboffice/ejb/OfficeBean_infとします。
デプロイメント記述はEJBの構成や設定を記述するXMLファイルです。
EJBの構成や設定はアノテーションで記述することもできます。必要な情報をすべてアノテーションで記述した場合は、デプロイメント記述は不要です。初期化パラメタはgetInitParametersメソッドかデプロイメント記述に記述します。アノテーションでは記述できません。
デプロイメント記述の詳細は、以下の規約を参照してください。
JSR 220: Enterprise JavaBeans, Version 3.0 EJB Core Contracts and Requirements
以下は、リモートビジネスインタフェースを使ったステートフルセションBeanのデプロイメント記述の例です。太字は、J2EE (EJB 2.1)と異なる部分です。
<?xml version="1.0" encoding="UTF-8"?> <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
version="3.0"> <enterprise-beans> <session> <!-- 名前を指定 --> <ejb-name>OfficeBean</ejb-name> <!-- リモートビジネスインタフェースを指定 --> <business-remote>ejboffice.ejb.Office</business-remote> <!-- セションBeanクラスを指定 --> <ejb-class>ejboffice.ejb.OfficeBean</ejb-class> <!-- ステートフルセションBeanであることを指定 --> <session-type>Stateful</session-type> <!-- エンタープライズBean環境として、初期化パラメタlogLevelを指定 --> <env-entry> <env-entry-name>uji/logLevel</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>10</env-entry-value> </env-entry> </session> </enterprise-beans> </ejb-jar>
ejb-jarタグにmetadata-complete="true"を指定した場合はアノテーションが無視されます。この場合、アノテーションの代わりにデプロイメント記述でEJBの構成や設定を記述する必要があります。Apcoordinatorが提供するセションBeanのスーパークラス(UjiSimpleStatelessBean、UjiSimpleStatefulBean、および、そのスーパークラスであるUjiSimpleSessionBean)はアノテーションを利用して設定を記述しているため、その設定をデプロイメント記述に記述する必要があります。スーパークラスに記述されているアノテーションの内容についてはAPIリファレンスを参照してください。
以下はステートフルセションBeanのデプロイメント記述の例です。
<?xml version="1.0" encoding="UTF-8"?> <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" metadata-complete="true" version="3.0"> <enterprise-beans> <session> <ejb-name>OfficeBean</ejb-name> <business-remote>ejboffice.ejb.Office</business-remote> <ejb-class>ejboffice.ejb.OfficeBean</ejb-class> <session-type>Stateful</session-type> <init-method>
<create-method>
<method-name>create</method-name>
</create-method>
<bean-method>
<method-name>create</method-name>
</bean-method>
</init-method>
<remove-method>
<bean-method>
<method-name>remove</method-name>
</bean-method>
</remove-method> <env-entry> <env-entry-name>uji/logLevel</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>10</env-entry-value> </env-entry> <resource-env-ref>
<resource-env-ref-name>sessionContext</resource-env-ref-name>
<resource-env-ref-type>javax.ejb.SessionContext</resource-env-ref-type>
<injection-target>
<injection-target-class>ejboffice.ejb.OfficeBean</injection-target-class>
<injection-target-name>sessionContext</injection-target-name>
</injection-target>
</resource-env-ref>
<post-construct>
<lifecycle-callback-method>postConstruct</lifecycle-callback-method>
</post-construct >
<pre-destroy>
<lifecycle-callback-method>preDestroy</lifecycle-callback-method>
</pre-destroy>
<post-activate>
<lifecycle-callback-method>postActivate</lifecycle-callback-method>
</post-activate>
<pre-passivate>
<lifecycle-callback-method>prePassivate</lifecycle-callback-method>
</pre-passivate> </session> </enterprise-beans> </ejb-jar>
ステートレスセションBeanの場合は、init-method、remove-method、post-activate、pre-passivateは記述しません。