Sun Java System Message Queue 4.1 リリースノート

JMX サポート

Java Management Extensions (JMX) 仕様に準拠して、Message Queue ブローカを設定および監視するための新しい API が追加されました。この API を使用すると、Message Queue クライアントアプリケーション内部からプログラムによってブローカ関数を設定および監視することができます。以前のバージョンの Message Queue では、これらの関数にはコマンド行または管理コンソールからしかアクセスできませんでした。

この API は、一連の JMX Managed Bean (MBean) によって設定されており、次の Message Queue 関連のリソースを管理します。

これらの MBean によって、基礎となるリソースの状態を、同期をとりながらポーリングおよび操作するための属性操作が設定されます。また、状態が変更されたときに、クライアントアプリケーションが非同期で待機して応答できるようにする通知も設定されます。JMX API を使用して、クライアントアプリケーションは次のようなタスクを設定および監視することができます。

JMX API の紹介と詳細情報については、『Sun Java System Message Queue 4.1 Developer’s Guide for JMX Clients』を参照してください。

ブローカサポート: JMX 関連のプロパティー

JMX API をサポートするために、いくつかの新しいブローカプロパティーが追加されました (表 1–3 を参照)。これらのプロパティーはいずれも Message Queue コマンドユーティリティー (imqcmd) によるコマンド行からは設定できません。その代わりに、ブローカユーティリティー (imqbrokerd) の -D オプションを使用するか、ブローカのインスタンス設定ファイル ( config.properties) を手作業で編集することで設定できます。さらに、これらのプロパティーのいくつか (imq.jmx.rmiregistry.start imq.jmx.rmiregistry.use imq.jmx.rmiregistry.port) は、表 1–4 に示されている新しいブローカユーティリティーオプションを使用して設定できます。次の表は、各オプションとその型、それぞれの使用方法について示しています。

表 1–3 JMX サポートのための新しいブローカプロパティー

プロパティー 

型 

説明 

imq.jmx.rmiregistry.start

ブール型

ブローカの起動時に RMI レジストリを起動するかどうかを指定します。

true の場合、ブローカは imq.jmx.rmiregistry.port によって指定されたポートで RMI レジストリを起動し、これを使用して JMX コネクタ用の RMI スタブを格納します。この場合、imq.jmx.rmiregistry.use の値は無視されます。

デフォルト値 : false

imq.jmx.rmiregistry.use

ブール型

外部の RMI レジストリを使用するかどうかを指定します。

imq.jmx.rmiregistry.start false の場合のみ適用されます。

true の場合、ブローカは imq.jmx.rmiregistry.port によって指定されたポートで外部の RMI レジストリを使用し、JMX コネクタ用の RMI スタブを格納します。この外部の RMI レジストリは、ブローカの起動時にすでに実行されている必要があります。

デフォルト値 : false

imq.jmx.rmiregistry.port

整数

RMI レジストリのポート番号

imq.jmx.rmiregistry.start または imq.jmx.rmiregistry.use true の場合のみ適用されます。このポート番号を JMX サービス URL の URL パスに追加することによって、JMX コネクタが RMI レジストリを使用するように設定できます。

デフォルト値 : 1099

imq.jmx.connector.list

文字列

事前設定された JMX コネクタの名前。コンマで区切られます。

デフォルト値 : jmxrmi,ssljmxrmi

imq.jmx.connector.activelist

文字列

ブローカの起動時にアクティブになる JMX コネクタの名前。コンマで区切られます。

デフォルト値 : jmxrmi

imq.jmx.connector.connectorName .urlpath

文字列

コネクタ connectorName の、JMX サービス URL の urlPath コンポーネント

JMX サービス URL パスが明示的に指定されている場合 (共有の外部 RMI レジストリが使用されている場合など) に有効です。

デフォルト値 : JMX コネクタ用の RMI スタブを格納するために RMI レジストリが使用されている場合 (つまり imq.jmx.registry.start または imq.jmx.registry.usetrue の場合)

   /jndi/rmi://brokerHost:rmiPort
      /brokerHost/brokerPort/connectorName

RMI レジストリが使用されていない場合 (デフォルトの場合。つまり、 imq.jmx.registry.start imq.jmx.registry.use の両方が false の場合):

   /stub/rmiStub

ここで rmiStub は、RMI スタブそのものをエンコードおよび直列化した表現です。

 

imq.jmx.connector.connectorName .useSSL

ブール型

コネクタ connectorName に Secure Socket Layer (SSL) を使用するかどうかを指定します。

デフォルト値 : false

imq.jmx.connector.connectorName .brokerHostTrusted

ブール型

コネクタ connectorName のブローカによって提示された任意の証明書を信頼するかどうかを指定します。

imq.jmx.connector. connectorName.useSSL true の場合のみ適用されます。

false の場合、Message Queue クライアントランタイムは提示されたすべての証明書を検証します。証明書の署名者がクライアントのトラストストア内に存在しない場合、検証は失敗します。

true の場合、証明書の検証はスキップされます。これは、ソフトウェアのテスト中で自己署名した証明書が使用されている場合などに便利です。

デフォルト値 : false

imq.jmx.connector.list プロパティーは、ブローカの起動時に作成される一連の名前付き JMX コネクタを定義します。imq.jmx.connector.activelist では、これらの中でアクティブにするものを指定します。名前付きのコネクタには、それぞれ独自のプロパティーセットがあります。

imq.jmx.connector.connectorName .urlpath

imq.jmx.connector.connectorName .useSSL

imq.jmx.connector.connectorName .brokerHostTrusted

デフォルトでは、 jmxrmi および ssljmxrmi という名前の 2 つの JMX コネクタが作成されます。前者は SSL 暗号化を使用しないように設定 (imq.jmx.connector.jmxrmi.useSSL = false) され、後者は使用するように設定 (imq.jmx.connector.ssljmxrmi.useSSL = true) されています。デフォルトでは、ブローカの起動時には jmxrmi コネクタのみがアクティブになります。通信のセキュリティー保護のために ssljmxrmi コネクタをアクティブにする方法については、「JMX クライアント用の SSL サポート」を参照してください。

使いやすくするために、コマンド行のブローカユーティリティー (imqbrokerd) にも、RMI レジストリの使用方法、起動、ポートを制御するための新しいオプション (表 1–4) が追加されています。これらのオプションの使用方法と効果は、表 1–3 に示されているブローカプロパティーの中の対応するものと同じです。次の表では、各オプションとともに対応するブローカプロパティーを示し、その使用方法についても説明します。

表 1–4 JMX サポートのための新しいブローカユーティリティーオプション

オプション 

対応するブローカプロパティー 

説明 

-startRmiRegistry

imq.jmx.rmiregistry.start

ブローカの起動時に RMI レジストリを起動するかどうかを指定します。

-useRmiRegistry

imq.jmx.rmiregistry.use

外部の RMI レジストリを使用するかどうかを指定します。

-rmiRegistryPort

imq.jmx.rmiregistry.port

RMI レジストリのポート番号

ブローカの起動時に作成および起動される JMX コネクタの JMX サービス URL を表示するために、コマンド行のコマンドユーティリティー (imqcmd) に新しいサブコマンド (表 1–5) が追加されました。この情報は、JMX コネクタを取得するために Message Queue の簡易クラス AdminConnectionFactory を使用しない JMX クライアントにとって必要になります。また、Java Monitoring and Management Console ( jconsole) などの汎用の JMX ブラウザを介して Message Queue を管理または監視するために使用することもできます。

表 1–5 新しいコマンドユーティリティーのサブコマンド

サブコマンド 

説明 

list jmx

JMX コネクタの JMX サービス URL を表示します

JMX クライアント用の SSL サポート

これまでに説明したように、Message Queue のメッセージブローカは、デフォルトでは、事前に設定済みの JMX コネクタ jmxrmi を使用して、セキュリティー保護されていない通信用に設定されています。通信のセキュリティー保護のために SSL (Secure Socket Layer) を使用する必要のあるアプリケーションでは、代わりにセキュリティー保護された JMX コネクタである ssljmxrmi をアクティブにする必要があります。このためには次の手順を実行する必要があります。

  1. Message Queue 管理ガイド』に示されている ssljmsssladmin、または cluster 接続サービスと同じ方法で、署名済みの証明書を取得およびインストールします。

  2. 必要に応じて、ルート CA 証明書をトラストストア内にインストールします。

  3. ブローカの起動時にアクティブになるように、JMX コネクタのリストに ssljmxrmi コネクタを追加します。

    imq.jmx.connector.activelist=jmxrmi,ssljmxrmi

  4. Message Queue ブローカユーティリティー (imqbrokerd) をパスワードファイル内のキーストアパスワードに渡すか、プロンプト表示されるコマンド行から入力して、ブローカを起動します。

  5. デフォルトでは、ssljmxrmi コネクタ、またはその他の SSL ベースのコネクタ は、提示されるすべてのブローカ SSL 証明書を検証するように設定されています。この検証を回避する場合、ソフトウェアのテスト中で自己署名の証明書を使用している場合などは、ブローカプロパティー imq.jmx.connector.ssljmxrmi.brokerHostTrusted true に設定します。

クライアント側では、ssljmxrmi を優先コネクタとして指定した URL を使用して管理者のコネクションファクトリ (AdminConnectionFactory ) を設定する必要があります。

AdminConnectionFactory  acf = new AdminConnectionFactory();
acf.setProperty(AdminConnectionConfiguration.imqAddress, "mq://myhost:7676/ssljmxrmi");

必要に応じて、システムプロパティー javax.net.ssl.trustStore および javax.net.ssl.trustStorePassword を使用して、JMX クライアントをトラストストアにポイントします。