Java Management Extensions (JMX) 仕様に準拠して、Message Queue ブローカを設定および監視するための新しい API が追加されました。この API を使用すると、Message Queue クライアントアプリケーション内部からプログラムによってブローカ関数を設定および監視することができます。以前のバージョンの Message Queue では、これらの関数にはコマンド行または管理コンソールからしかアクセスできませんでした。
この API は、一連の JMX Managed Bean (MBean) によって設定されており、次の Message Queue 関連のリソースを管理します。
メッセージブローカ
接続サービス
接続
宛先
メッセージプロデューサ
メッセージコンシューマ
トランザクション
ブローカクラスタ
ロギング
Java Virtual Machine (JVM)
これらの MBean によって、基礎となるリソースの状態を、同期をとりながらポーリングおよび操作するための属性と操作が設定されます。また、状態が変更されたときに、クライアントアプリケーションが非同期で待機して応答できるようにする通知も設定されます。JMX API を使用して、クライアントアプリケーションは次のようなタスクを設定および監視することができます。
ブローカのポート番号を設定する
ブローカのメッセージの最大サイズを設定する
接続サービスを一時停止する
接続サービスの最大スレッド数を設定する
サービス上の現在の接続数を取得する
接続を破棄する
送信先を作成する
送信先を破棄する
送信先の自動作成を有効または無効にする
送信先からすべてのメッセージを削除する
ブローカの起動後に送信先の受信したメッセージの累積数を取得する
キューの現在の状態 (実行中または一時停止) を取得する
トピックのメッセージプロデューサの現在数を取得する
永続サブスクライバからすべてのメッセージを削除する
現在の JVM ヒープサイズを取得する
JMX API の紹介と詳細情報については、『Sun Java System Message Queue 4.1 Developer’s Guide for JMX Clients』を参照してください。
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.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 を表示します |
これまでに説明したように、Message Queue のメッセージブローカは、デフォルトでは、事前に設定済みの JMX コネクタ jmxrmi を使用して、セキュリティー保護されていない通信用に設定されています。通信のセキュリティー保護のために SSL (Secure Socket Layer) を使用する必要のあるアプリケーションでは、代わりにセキュリティー保護された JMX コネクタである ssljmxrmi をアクティブにする必要があります。このためには次の手順を実行する必要があります。
『Message Queue 管理ガイド』に示されている ssljms、ssladmin、または cluster 接続サービスと同じ方法で、署名済みの証明書を取得およびインストールします。
必要に応じて、ルート CA 証明書をトラストストア内にインストールします。
ブローカの起動時にアクティブになるように、JMX コネクタのリストに ssljmxrmi コネクタを追加します。
imq.jmx.connector.activelist=jmxrmi,ssljmxrmi
Message Queue ブローカユーティリティー (imqbrokerd) をパスワードファイル内のキーストアパスワードに渡すか、プロンプト表示されるコマンド行から入力して、ブローカを起動します。
デフォルトでは、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 クライアントをトラストストアにポイントします。