28.2.3. -jboss-beans.xml ファイルからのデプロイメント
-jboss-beans.xml ファイルの JBoss Microcontainer スキーマを使用して POJO (Plain Old Java Object) が記述されている場合、 JBoss Enterprise Application Platform 5 は -service.xml で説明した MBean サービスのデプロイメント同様に、 POJO で構成されるサービスをデプロイすることができます。 このようなファイルを作成したら、 直接 deploy ディレクトリにデプロイするか、 ear または sar にパッケージ化することができます。 例は次の通りです。
<?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 name="ExampleCacheRuntimeConfig" 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="initialStateRetrievalTimeout">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" />
</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</false>
</constructor>
</bean>
<bean name="ExampleService" class="org.foo.ExampleService">
<property name="cache"><inject bean="ExampleCache"/></property>
</bean>
</deployment>
上記の多くが JBoss Cache
Configuration オブジェクトの作成になります。 これは、 CacheManager サービスの設定と同じになります (「CacheManager 設定の編集」 参照)。 この例では、 CacheManager サービスをキャッシュファクトリとして使用していないため、 独自のファクトリ Bean を作成し、 キャッシュの作成に使用します (「ExampleCache」Bean)。 そして、「ExampleCache」 が必要とするサービス (架空) へ挿入されます。
上記の例で使用されている
RuntimeConfig オブジェクトを見てください。 マイクロコンテナが可視できる TransactionManager や JGroups ChannelFactory などの外部リソースは、 この RuntimeConfig へ依存関係が挿入されます。 この例では、 Enterprise Application Platform における他の配備記述子の一部に、 参照された Bean が既に記述されていることを前提としています。
上記の設定を使用すると、 JMX は「ExampleCache」キャッシュを表示できません。 ここで、 キャッシュが JMX にバインドされる別の方法を見てみましょう。
<?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">
.... same as above
</bean>
<bean name="ExampleCacheJmxWrapper" class="org.jboss.cache.jmx.CacheJmxWrapper">
<annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX
(name="foo:service=ExampleCacheJmxWrapper",
exposedInterface=org.jboss.cache.jmx.CacheJmxWrapperMBean.class,
registerDirectly=true)
</annotation>
<property name="configuration"><inject bean="ExampleCacheConfig"/></property>
</bean>
<bean name="ExampleService" class="org.foo.ExampleService">
<property name="cache"><inject bean="ExampleCacheJmxWrapper" property="cache"/></property>
</bean>
</deployment>
この例では、 「ExampleCacheJmxWrapper」 Bean により設定からキャッシュが作成されます。
CacheJmxWrapper はキャッシュの MBean インターフェースを提供する JBoss Cache クラスです。 <annotation> 要素を追加すると、 JBoss Microcontainer @JMX アノテーションを Bean へバインドします。 その結果、 デプロイメントプロセスの一部として JBoss Enterprise Application Platform が Bean を JXM に登録します。
実際の基礎の
org.jboss.cache.Cache インスタンスは、 cache プロパティにて CacheJmxWrapper より使用できます。 この例は、 キャッシュを「ExampleService」に挿入するための使用方法を表しています。