5.8. JMS ユーザーマネージャーの設定

JMS User Manager は事前設定したクライアント ID をユーザーにマッピングします。設定したログインモジュールに応じてユーザーとロールのテーブルの管理も行います。
JMSUserManager の設定例は以下のとおりです。
<mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
  name="jboss.messaging:service=JMSUserManager"
  xmbean-dd="xmdesc/JMSUserManager-xmbean.xml">
  <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
  <depends optional-attribute-name="TransactionManager">
    jboss:service=TransactionManager
  </depends>
  <attribute name="DataSource">java:/DefaultDS</attribute>
  <attribute name="CreateTablesOnStartup">true</attribute>
  <attribute name="SqlProperties">
    CREATE_USER_TABLE=CREATE TABLE JBM_USER (USER_ID VARCHAR(32) NOT NULL,
      PASSWD VARCHAR(32) NOT NULL, CLIENTID VARCHAR(128),
      PRIMARY KEY(USER_ID)) ENGINE = INNODB
    
    CREATE_ROLE_TABLE=CREATE TABLE JBM_ROLE (ROLE_ID VARCHAR(32) NOT NULL,
      USER_ID VARCHAR(32) NOT NULL, PRIMARY KEY(USER_ID, ROLE_ID))
      ENGINE = INNODB
    
    SELECT_PRECONF_CLIENTID=SELECT CLIENTID FROM JBM_USER WHERE USER_ID=?
    
    POPULATE.TABLES.1=INSERT INTO JBM_USER (USER_ID,PASSWD,CLIENTID)
      VALUES ('jdoe','jdoepw','jdoe-id')   
  </attribute>
</mbean>

5.8.1. JMSUserManager MBean 属性

CreateTablesOnStartup
JMS ユーザーマネージャーが起動時にテーブル(およびインデックス)の作成を試行するようにするには、これを true に設定します。テーブルまたはインデックスが既に存在している場合は、SQLException は JDBC ドライバーによって送出されますが、永続マネージャーはこれを無視するためその動作は継続します。
デフォルトでは、CreateTablesOnStartup 属性の値は true に設定されています。
UsingBatchUpdates
データベースが JDBC バッチ更新に対応している場合は、これを true に設定します。JDBC 永続マネージャーは、バッチ内のデータベースアップデートを複数まとめ、パフォーマンスを向上します。
デフォルトでは、UsingBatchUpdates 属性の値は false に設定されています。
SQLProperties
特定のデーターベースの DDL と DML を指定します。特定の DDL や DML ステートメントがオーバーライドされていない場合は、デフォルトの Hypersonic 設定がそのステートメントに使用されます。
デフォルトユーザーとロールのデータをここでも指定可能です。挿入データは、上記の例のように POPULATE.TABLES で開始するプロパティー名で指定する必要があります。
Database Connection Retry パラメーターは、接続失敗が検出された場合接続を再確立するか、何度再接続を試みるか、接続再試行の間隔はどの程度かを制御します。
RetryOnConnectionFailure
MBean がデータベースへの再接続を試行すべきか指定します。デフォルト値は false です。
MaxRetry
DataSource 接続失敗の上限を指定します。デフォルトは 25 です。パラメーターを -1 に設定し、「Retry forever」モードを有効にします。このパラメーターは RetryOnConnectionFailuretrue に設定されている場合有効です。

重要

クラスター化されたデスティネーションからメッセージをコンシュームするクライアントは、クローズされると応答しなくなります。これは、ノードの MaxRetry 値が-1 に設定されている場合に発生し、データベースへの接続が失われます。この問題を回避するには、ノードのMaxRetry パラメーターを-1よりも大きな値に設定してください。 [database]-persistence-service.xmlファイルにある PersistenceManagerPostOfficeJMSUserManager MBeanの属性値を設定してください。
RetryInterval
連続する再試行の間隔を指定します。デフォルトは、1000 (ミリ秒) となっています。このパラメーターは、RetryOnConnectionFailuretrue に設定されている場合に有効です。