14.3.6. Oracle DataBases に関する注記

本章で説明する設定は、 JBoss Enterprise Application Platform がサーバーの起動時に外部データベース内で 必要なテーブルを自動的に作成することを前提としています。 ほとんどの場合で問題ありませんが、 Oracle のようにデータベースによっては、 同じデータベースサーバーを使用して複数の JBoss Enterprise Application Platform インスタンスをサポートすると軽度な問題が発生することがあります。
Oracle データベースは schemaname.tablename形式のテーブルを作成します。JBoss Enterprise Application Platform で必要となる TIMERS テーブルと HILOSEQUENCES テーブルが別のスキーマ上に既に存在する場合、 スキーマ上には作成されません。この問題を回避するには、$JBOSS_HOME/server/PROFILE/deploy/ejb2-timer-service.xml ファイルを編集し、 テーブル名を TIMERS から schemaname2.tablename などのように変更します。
          <mbean code="org.jboss.ejb.txtimer.DatabasePersistencePolicy" 
          name="jboss.ejb:service=EJBTimerService,persistencePolicy=database">
          <!-- DataSourceBinding ObjectName -->
          <depends optional-attribute-name="DataSource">
          jboss.jca:service=DataSourceBinding,name=DefaultDS
          </depends>
          <!-- The plugin that handles database persistence -->
          <attribute name="DatabasePersistencePlugin">
          org.jboss.ejb.txtimer.GeneralPurposeDatabasePersistencePlugin
          </attribute>
          <!-- The timers table name -->
          <attribute name="TimersTable">TIMERS</attribute>
          </mbean>
同様に、$JBOSS_HOME/server/PROFILE/deploy/uuid-key-generator.sar/META-INF/jboss-service.xml ファイルも編集し、テーブル名を HILOSEQUENCES から schemaname2.tablename のように変更します。
 <!-- HiLoKeyGeneratorFactory --> <mbean
          code="org.jboss.ejb.plugins.keygenerator.hilo.HiLoKeyGeneratorFactory"
          name="jboss:service=KeyGeneratorFactory,type=HiLo">
          
          <depends>jboss:service=TransactionManager</depends>
          
          <!-- Attributes common to HiLo factory instances -->
          
          <!-- DataSource JNDI name -->
          <depends optional-attribute-name="DataSource">jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
          
          <!-- table name -->
          <attribute name="TableName">HILOSEQUENCES</attribute>

重要

Oracle 11g R1 で稼働する場合 、Oracle JDBC driver version 11.1.0.7.0 が原因で、JBoss Messaging Test Suite が SQLException ("Bigger type length than Maximum") を返し問題が発生します。
これは、Oracle JDBC ドライバー 11.1.0.7.0 の再発バグが原因となっています。
Oracle 11g R1、Oracle RAC 11g R1、Oracle RAC 11g R2 では、Orace JDBC ドライバーのバージョン 11.2.0.1.0 を使うように推奨されます。