![]() |
Sun ONE Message Queue, Version 3.0.1 管理員指南 |
本附錄介紹如何設定代理程式,以使用外掛持續性來存取 JDBC 可存取的資料儲存區。
介紹
Sun ONE Message Queue (MQ) 代理程式包括持續性管理程式元件,可管理永久性資訊的寫入與擷取 (請參閱持續性管理程式)。依預設,此持續性管理程式已配置,可存取內建、基於檔案的資料儲存區,但是您可以重新配置它,以便透過 JDBC 相容的驅動程式插入任何可存取的資料儲存區。
若要配置代理程式以使用外掛持續性,您需要在代理程式實例配置檔案中設定一些與 JDBC 相關的屬性。您還需要建立適當的資料庫綱目,以執行 MQ 持續性作業。MQ 提供有公用程式,即資料庫管理員 (imqdbmgr),此程式使用您的 JDBC 驅動程式和代理程式配置屬性以建立並管理外掛資料庫。
作為範例,本附錄中描述的程序使用 Java 2 SDK Enterprise Edition 隨附的 Cloudscape DBMS 加以描述 (J2EE SDK 可從 java.sun.com 下載獲得)。此範例使用 Cloudscape 的內嵌式版本 (並非用戶端/伺服器版本)。在程序中,說明均使用 Cloudscape 範例中的路徑名稱和屬性名稱加以描述。它們均用「範例」一詞識別︰
其他範例可在以下位置找到:
IMQ_HOME/demo/jdbc (在 Solaris 上為 /usr/demo/imq/jdbc)
插入 JDBC 可存取的資料儲存區
插入 JDBC 可存取的資料儲存區僅需要幾個步驟。
插入 JDBC 可存取的資料儲存區
- 在代理程式的配置檔案中設定與 JDBC 相關的屬性。
請參閱表格 A-1 中提供的屬性。
- 將您的 JDBC 驅動程式 JAR 檔案的副本或符號式連結放在以下路徑中:
IMQ_VARHOME/lib/ext (在 Solaris 上為 /usr/share/lib/imq/ext/)
副本範例 (Solaris)︰
% cp j2sdk 安裝目錄/lib/cloudscape/cloudscape.jar IMQ_VARHOME/lib/ext
符號式連結範例 (Solaris)︰
% ln -s j2sdk 安裝目錄/lib/cloudscape/cloudscape.jar IMQ_VARHOME/lib/ext
- 建立 MQ 持續性所需的資料庫綱目。
使用 imqdbmgr create all 指令 (對於內嵌式資料庫) 或 imqdbmgr create tbl 指令 (對於外部資料庫)。請參閱資料庫管理員公用程式 (imqdbmgr)。
範例︰
% cd IMQ_HOME/bin (在 Solaris 上為 /usr/bin)
% imqdbmgr create all
註 如果已使用內嵌式資料庫,則建議在以下目錄下建立此資料庫︰
如果內嵌式資料庫未由使用者名稱和密碼保護,則可能由檔案系統許可權保護。若要確保代理程式可讀取和寫入資料庫,則執行此代理程式的使用者應與使用 imqdbmgr 指令 (請參閱資料庫管理員公用程式 (imqdbmgr)) 建立內嵌式資料庫的使用者相同。
與 JDBC 相關的代理程式配置屬性
代理程式的實例配置檔案位於以下位置
IMQ_VARHOME/instances/代理程式名稱/props/config.properties
(在 Solaris 上為 /var/imq/instances/代理程式名稱/props/config.properties)如果此檔案尚未存在,則您必須使用 -name brokerName 選項啟動代理程式,為 MQ 建立此檔案。
表格 A-1 描述了當您插入 JDBC 可存取的資料儲存區時需要設定的配置屬性。您可以使用外掛持續性在每個代理程式實例的實例配置檔案 (config.properties) 中設定這些屬性。此表格包括您為 Cloudscape DBMS 範例指定的值。
表格 A-1    與 JDBC 相關的屬性
屬性名稱
描述
imq.persist.store
指定基於檔案或基於 JDBC 的資料儲存區。
範例︰
jdbc
imq.persist.jdbc.brokerid
(選擇性)
指定附加至資料庫表格名稱的代理程式實例識別碼,以便在多個代理程式實例使用相同的資料庫作為永久性資料儲存區的情況下,這些資料庫表格名稱均是唯一的。(由於內嵌式資料庫僅為一個代理程式實例儲存資料,因此通常不需要指定識別碼。)識別碼必須為字母數字字串,其長度不超過資料庫所允許的最長表格名稱長度減去 12。
範例︰Cloudscape 不需要
imq.persist.jdbc.driver
指定 JDBC 驅動程式的 Java 類別名稱,以連線至資料庫。
範例︰
COM.cloudscape.core.JDBCDriver
imq.persist.jdbc.opendburl
指定資料庫 URL,以開啟與現有資料庫的連線。
範例︰
jdbc:cloudscape:IMQ_VARHOME/
instances/代理程式名稱/dbstore/imqdb
(在 Solaris 上為 jdbc:cloudscape:var/imq...)
imq.persist.jdbc.createdburl
(選擇性)
指定資料庫 URL,以開啟連線建立資料庫。(僅在使用 imqdbmgr 建立資料庫時指定。)
範例︰
jdbc:cloudscape:IMQ_VARHOME/
instances/代理程式名稱/dbstore/
imqdb;create=true
(在 Solaris 上為 jdbc:cloudscape:var/imq...)
imq.persist.jdbc.closedburl
(選擇性)
指定資料庫 URL,以在關閉代理程式時關閉目前資料庫連線。
範例 (Cloudscape 所必需的):
jdbc:cloudscape:;shutdown=true
imq.persist.jdbc.user
(選擇性)
如果必需,則指定用於開啟資料庫連線的使用者名稱。考慮到安全性因素,可以指定此值,而不是使用指令行選項:
imqbrokerd -dbuser
和 imqdbmgr -uimq.persist.jdbc.needpassword
(選擇性)
指定資料庫是否需要密碼以存取代理程式。值 true 表示需要密碼。可以使用以下指令行選項指定密碼:
imqbrokerd -dbpassword
imqdbmgr -p如果未使用指令行選項或密碼檔案提供密碼 (請參閱使用密碼檔案),則代理程式將提示您提供密碼。
imq.persist.jdbc.password
(選擇性)
如果必需,則指定用於開啟資料庫連線的密碼。僅能在密碼檔案中指定 (請參閱使用密碼檔案)。如需更多安全性,請讓代理程式提示您提供密碼,或使用以下指令行選項指定密碼:
imqbrokerd -dbpassword
imqdbmgr -p如同所有的代理程式配置屬性,可以使用 -D 指令行選項設定值。如果資料庫需要設定某些資料庫特定的屬性,則當啟動代理程式 (imqbrokerd) 或資料庫管理員公用程式 (imqdbmgr) 時,還可以使用 -D 指令行選項設定這些值。
範例︰
對於 Cloudscape 內嵌式資料庫範例,並非在資料庫連線 URL (如表格 A-1 範例中所示的那些 URL) 中指定絕對路徑,-D 指令行選項可用於定義 Cloudscape 系統目錄:
-Dcloudscape.system.home=IMQ_VARHOME/instances/brokerName/dbstore
在這種情況下,要建立和開啟資料庫的 URL 僅可分別指定為︰
imq.persist.jdbc.createdburl=jdbc:cloudscape:imqdb;create=true
和
imq.persist.jdbc.opendburl=jdbc:cloudscape:imqdb
資料庫管理員公用程式 (imqdbmgr)
MQ 提供有資料庫管理員公用程式 (imqdbmgr),以設定持續性所需的綱目。如果 MQ 資料庫表格損毀或者您想使用其他資料庫作為資料儲存區,此公用程式還可用於刪除這些表格。
註 如果代理程式實例異常崩潰,則未參考過的永久性資訊可能保留在資料儲存區中。啟動然後關閉代理程式將正常清除資料儲存區。
本節描述基本的 imqdbmgr 指令語法、提供子指令的清單,並總結 imqdbmgr 指令選項。
指令語法
imqdbmgr 指令的一般語法如下:
imqdbmgr subcommand argument [options]
imqdbmgr -h|-help
imqdbmgr -v|-version請注意,如果您指定 -v 或 -h 選項,則系統不會執行指令行上指定的子指令。例如,如果您輸入以下指令,則系統會顯示版本資訊但不會執行 create 子指令。
imqdbmgr create all -v
imqdbmgr 子指令
資料庫管理員公用程式 (imqdbmgr) 包括表格 A-2 中列出的子指令:
imqdbmgr 指令選項摘要
表格 A-3 列出了 imqdbmgr 指令的選項。
表格 A-3    imqdbmgr 選項
選項
描述
-D attribute=value
將指定屬性設定為指定值。
-b brokerName
指定代理程式實例名稱並使用相應的實例配置檔案。
-h
顯示用法說明。不執行指令行上的其他任何指令。
-p password
指定資料庫密碼。
-u name
指定資料庫使用者名稱。
-v
顯示版本資訊。不執行指令行上的其他任何指令。