5.2. JBoss Microcontainer (JBoss AS 5.x) の使用
JBoss AS は AS 5 よりファイル名が
-jboss-beans.xml で終わるファイルのデプロイメントによる POJO サービスのデプロイメントをサポートするようになりました。 POJO サービスは実装に Plain Old Java Object を使用します。 Plain Old Java Object とは、 特別なインターフェースの実装や特定のスーパークラスの拡張が必要ない単純な Java Bean のことです。 Cache は POJO サービスで、 Configuration のすべてのコンポーネントも POJO になります。 そのため、 必然的にこのような方法でキャッシュをデプロイすることになります。
キャッシュのデプロイメントは、 JBoss AS のコアを形成する JBoss Microcontainer を使用して行われます。 JBoss Microcontainer は洗練された IOC フレームワークで、 Spring と似ています。 基本的に、
-jboss-beans.xml ファイルは POJO サービスを構成するさまざまな Bean をどのように組み合わせるかを IOC フレームワークに伝えます。
Configuration コンポーネントによって公開される設定可能オプション毎に、 ゲッタ/セッタを設定クラスに定義する必要があります。 これは、 対応するプロパティが設定された時に JBoss Microcontainer が典型的な IOC の方法でこれらのメソッドを呼び出せるようにするため必要となります。
サーバーの
lib ディレクトリに jbosscache-core.jar ライブラリと jgroups.jar ライブラリが存在するようしてください。 通常、 JBoss AS を all 設定で使用する場合に必要となります。 キャッシュ設定に応じて任意の jar (jdbm.jar など) が必要となります。
-beans.xml ファイルの例は次のようになります。 インストールされた JBoss AS 5 の server/all/deploy ディレクトリに他の例があります。
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="urn:jboss:bean-deployer:2.0">
<!-- First we create a Configuration object for the cache -->
<bean name="ExampleCacheConfig"
class="org.jboss.cache.config.Configuration">
<!-- Externally injected services -->
<property name="runtimeConfig">
<bean class="org.jboss.cache.config.RuntimeConfig">
<property name="transactionManager">
<inject bean="jboss:service=TransactionManager"
property="TransactionManager"/>
</property>
<property name="muxChannelFactory"><inject bean="JChannelFactory"/></property>
</bean>
</property>
<property name="multiplexerStack">udp</property>
<property name="clusterName">Example-EntityCache</property>
<property name="isolationLevel">REPEATABLE_READ</property>
<property name="cacheMode">REPL_SYNC</property>
<property name="stateRetrievalTimeout">15000</property>
<property name="syncReplTimeout">20000</property>
<property name="lockAcquisitionTimeout">15000</property>
<property name="exposeManagementStatistics">true</property>
</bean>
<!-- Factory to build the Cache. -->
<bean name="DefaultCacheFactory" class="org.jboss.cache.DefaultCacheFactory">
<constructor factoryClass="org.jboss.cache.DefaultCacheFactory"
factoryMethod="getInstance" />
</bean>
<!-- The cache itself -->
<bean name="ExampleCache" class="org.jboss.cache.Cache">
<constructor factoryMethod="createCache">
<factory bean="DefaultCacheFactory"/>
<parameter class="org.jboss.cache.config.Configuration"><inject bean="ExampleCacheConfig"/></parameter>
<parameter class="boolean">false</parameter>
</constructor>
</bean>
</deployment>
上記の構文に関する詳細は JBoss Microcontainer のドキュメント を参照してください。 基本的に、 各
bean 要素はオブジェクトを表し、 Configuration と 「Configuration オブジェクトの構成」 を作成するために使用されます。 DefaultCacheFactory Bean はキャッシュを構築し、 概念的に 「キャッシュのインスタンス化と起動」 の章と同じことを実行します。
上記の例で、
RuntimeConfig オブジェクトの使用を確認してみてください。 TransactionManager や JGroups の ChannelFactory などのマイクロコンテナが可視できる外部リソースは、 依存関係が RuntimeConfig に挿入されます。 ここでは、 AS における他のデプロイメント記述子の一部では参照された Bean が既に記述されていることが前提となっています。