Sun Java System Message Queue 4.1 版本說明

JMX 支援

已增加符合 Java Management Extensions (JMX) 規格,且可用於配置與監視 Message Queue 代理程式的新 API。您可以使用此 API,從 Message Queue 用戶端應用程式內以程式化方式配置並監視代理程式功能。在 Message Queue 的早期版本中,這些功能只能從指令行或管理主控台存取。

API 包含一組 JMX 受管理 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

Boolean

指定是否在代理程式啟動時啟動 RMI 登錄。

若為 true,則代理程式會在 imq.jmx.rmiregistry.port 指定的連接埠啟動 RMI 登錄,並使用該登錄儲存 JMX 連接器的 RMI stub。請注意,此時會忽略 imq.jmx.rmiregistry.use 的值。

預設值:false

imq.jmx.rmiregistry.use

Boolean

指定是否使用外部 RMI 登錄。

僅在 imq.jmx.rmiregistry.startfalse 時適用。

若為 true,則代理程式會在 imq.jmx.rmiregistry.port 指定的連接埠使用外部 RMI 登錄,以儲存 JMX 連接器的 RMI stub。代理程式啟動時,必須已在執行外部 RMI 登錄。

預設值:false

imq.jmx.rmiregistry.port

Integer

RMI 登錄的連接埠號

僅在 imq.jmx.rmiregistry.startimq.jmx.rmiregistry.usetrue 時適用。接著可藉由在 JMX 服務 URL 的 URL 路徑中包含此連接埠號,以配置 JMX 連接器使用 RMI 登錄。

預設值:1099

imq.jmx.connector.list

String

預先配置的 JMX 連接器名稱,以逗號分隔

預設值:jmxrmi,ssljmxrmi

imq.jmx.connector.activelist

String

代理程式啟動時要啟動的 JMX 連接器名稱,以逗號分隔

預設值:jmxrmi

imq.jmx.connector.connectorName.urlpath

String

連接器 connectorName 之 JMX 服務 URL 的 urlPath 元件

這在 JMX 服務 URL 路徑必須明確設定時 (例如使用共用外部 RMI 登錄時),會很有用。

預設值:若是使用 RMI 登錄儲存 JMX 連接器的 RMI stub (亦即如果 imq.jmx.registry.startimq.jmx.registry.usetrue)

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

若未使用 RMI 登錄 (根據預設,imq.jmx.registry.startimq.jmx.registry.use 皆為 false):

   /stub/rmiStub

其中 rmiStub 是 RMI stub 本身的已編碼和串列化表示式

 

imq.jmx.connector.connectorName.useSSL

Boolean

指定連接器 connectorName 是否使用安全傳輸層 (SSL)。

預設值:false

imq.jmx.connector.connectorName.brokerHostTrusted

Boolean

指定是否信任代理程式提供給連接器 connectorName 的所有憑證。

僅在 imq.jmx.connector.connectorName.useSSLtrue 時適用。

若為 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

根據預設,會建立兩個 JMX 連接器,名為 jmxrmissljmxrmi;第一個連接器會配置為不使用 SSL 加密 (imq.jmx.connector.jmxrmi.useSSL = false),第二個連接器則使用 (imq.jmx.connector.ssljmxrmi.useSSL = true)。根據預設,代理程式啟動時只會啟動 jmxrmi 連接器;請參閱JMX 用戶端的 SSL 支援,以取得有關如何啟動 ssljmxrmi 連接器進行安全通訊的資訊。

為方便使用,還在指令行代理程式公用程式 (imqbrokerd) 中增加了新的選項 (表 1–4),以控制 RMI 登錄的使用、啟動和連接埠。這些選項的用法和效果與其等效代理程式特性 (如表 1–3 中所述) 相同。該表列出每個選項、指定其等效代理程式特性,並說明其用法。

表 1–4 JMX 支援功能的新代理程式公用程式選項

選項 

等效代理程式特性 

說明 

-startRmiRegistry

imq.jmx.rmiregistry.start

指定是否在代理程式啟動時啟動 RMI 登錄。

-useRmiRegistry

imq.jmx.rmiregistry.use

指定是否使用外部 RMI 登錄。

-rmiRegistryPort

imq.jmx.rmiregistry.port

RMI 登錄的連接埠號

一個新的子指令 (表 1–5) 增加至指令行指令公用程式 (imqcmd),以列出在代理程式啟動時建立和啟動的 JMX 連接器之 JMX 服務 URL。JMX 用戶端若要不使用 Message Queue 簡易類別 AdminConnectionFactory 即取得其 JMX 連接器,就需要此資訊。此資訊也可用於透過 Java 監視與管理主控台 (jconsole) 等一般 JMX 瀏覽器,來管理與監視 Message Queue。

表 1–5 新指令公用程式子指令

子指令 

說明 

list jmx

列出 JMX 連接器的 JMX 服務 URL

JMX 用戶端的 SSL 支援

如上所述,預設會將 Message Queue 訊息代理程式配置為使用預先配置之 JMX 連接器 jmxrmi,進行不安全的通訊。應用程式若要使用安全傳輸層 (SSL) 進行安全通訊,則必須啟動另一個安全的 JMX 連接器 ssljmxrmi。此項作業需要下列步驟:

  1. 如「Message Queue Administration Guide」中所述,使用與 ssljmsssladmincluster 連線服務相同的方式取得並安裝簽署的憑證。

  2. 視需要在信任清單存放區中安裝根憑證授權單位的憑證。

  3. ssljmxrmi 連接器增加至要在代理程式啟動時啟動的 JMX 連接器清單:

    imq.jmx.connector.activelist=jmxrmi,ssljmxrmi

  4. 使用 Message Queue 代理程式公用程式 (imqbrokerd) 啟動代理程式,然後傳遞密碼檔案中的金鑰庫密碼,或在提示時從指令行輸入。

  5. 根據預設,ssljmxrmi 連接器 (或任何其他基於 SSL 的連接器) 會配置為驗證所有提供給它的代理程式 SSL 憑證。若要避免此驗證 (例如,在軟體測試期間使用自我簽署的憑證時),請將代理程式特性 imq.jmx.connector.ssljmxrmi.brokerHostTrusted 設定為 true

配置用戶端的管理員連線工廠 (AdminConnectionFactory) 時,內含的 URL 必須指定 ssljmxrmi 為喜好的連接器:

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

請視需要使用系統特性 javax.net.ssl.trustStorejavax.net.ssl.trustStorePassword,將 JMX 用戶端指向信任清單存放區。