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」に挿入するための使用方法を表しています。