本節包含 Message Queue 4.1 的已知問題清單。涵蓋以下的產品區域:
如需目前錯誤的清單、這些錯誤的狀態與解決方法,Java Developer Connection™ 成員可參考 Java Developer Connection 網站上的「Bug Parade」頁面。在您報告新的錯誤之前,請先檢視此頁面。儘管此頁面未列出所有的 Message Queue 錯誤,但如果您想知道問題是否已報告,這是個不錯的起點。
http://bugs.sun.com/bugdatabase/index.jsp
可免費獲得 Java Developer Connection 成員資格,但需要註冊。Sun 的「For Developers」網頁上會提供有關如何成為 Java Developer Connection 成員的詳細資訊。
若要報告新的錯誤或提交功能請求,請將郵件傳送至 imq-feedback@sun.com。
本節說明與安裝 Message Queue 4.1 版相關的問題。
Message Queue 4.1 版由新的安裝程式所安裝,該安裝程式也會安裝及升級 Message Queue 所需的共用元件,例如 JDK、NSS 程式庫、JavaHelp 等。此安裝程式與 Java Enterprise System (JES) 安裝程式不會共用相同的產品登錄。如果 Message Queue 安裝程式把隨著 JES 安裝的 Message Queue 版本移除,然後升級至 Message Queue 4.1,則 JES 產品登錄的狀態可能會不一致。因此,執行 JES 解除安裝程式時,它可能會不慎移除 Message Queue 4.1 以及並非由其安裝的相依共用元件。
升級由 JES 安裝程式所安裝之軟體的最佳方式如下所示。
使用 JES 解除安裝程式移除 Message Queue 及其共用元件。
使用 Message Queue 安裝程式安裝 Message Queue 4.1。
Message Queue 4. 1 安裝程式的 [JDK Selection] 畫面可讓您選取系統上現有的 JDK/JRE,供 Message Queue 使用。不過所示的清單也會包含用於執行安裝程式應用程式的 JRE。此 JRE 是安裝程式的隨附軟體,並未實際安裝在系統上。(錯誤 6585911)
安裝程式所使用的 JRE 需透過其路徑加以辨識,此路徑應位於解壓縮後的安裝程式目錄之下,並應包含 mq4_1–installer 子目錄。例如:
some_directory/mq4_1–installer/usr/jdk/instances/jdk1.5.0/jre
請勿選取此 JRE 供 Message Queue 使用。請改選取系統上的其他 JDK。若不存在,請採用適用於您的平台的動作。
Solaris 或 Linux:選取 [安裝和使用預設 JDK]。
Windows:下載並安裝 JDK,再執行 Message Queue 4.1 安裝程式。
在 Windows 上安裝 Message Queue 時,請注意下列限制。
安裝程式並未將 Message Queue 的項目增加至 [開始]>[程式集] 功能表 (錯誤 6567258)。請依照「Sun Java System Message Queue 4.1 Administration Guide」中的「Starting the Administration Console」所述,使用指令行啟動管理主控台。
安裝程式並未將 IMQ_HOME\mq\bin 目錄增加至 PATH 環境變數。(錯誤 6567197)。當使用者呼叫 Message Queue 公用程式 (IMQ_HOME\mq\bin\command) 時,需要將此項目增加至其 PATH 環境變數,或提供完整的路徑名稱。
安裝程式未將項目增加至 Windows 登錄以表示已安裝 Message Queue。
當安裝程式以無訊息模式執行時,會立即返回。安裝會確實執行,但是使用者無法知道無訊息安裝究竟於何時完成。(錯誤 6586560)
Windows 不支援文字模式 (installer –t)。在 Windows 上以文字模式執行安裝程式會出現錯誤訊息。即使安裝程式在非英文的語言環境中執行,此訊息還是會以英文顯示。(錯誤 6594142)
即使安裝程式在非英文的語言環境中執行,安裝程式的 [安裝主目錄] 畫面上還是會以英文顯示字串「Install Home」。(錯誤 6592491)
錯誤訊息和「不完整」摘要狀態會誤導嘗試使用 installer-n 指令進行安裝的使用者。但指令實際上已成功執行。(錯誤 6594351)
下列問題會影響 Linux 平台上的安裝作業。
[JDK 選擇] 面板上的捲動清單僅會顯示一個項目。因此很難在清單中選取其他 JDK。(錯誤 6584735)
若 JDK 是最新的版本且使用者在 [JDK 選擇] 畫面上選取 [安裝預設 JDK],則安裝程式仍會嘗試安裝,並報告無法安裝套裝軟體。但即使發生此問題,安裝仍會成功完成。(錯誤 6581310)
當安裝程式以模擬測試模式 (installer –n ) 執行時,[摘要] 畫面會出現錯誤訊息,同時顯示安裝狀態為「不完整」。此為錯誤且有誤導之嫌;模擬測試不會在系統上進行任何安裝,而只會建立後續可用於安裝的回覆檔。(錯誤 6594351)
如果系統上存在舊版的 Message Queue 本土化 RPM,則在 [多語言套裝軟體] 畫面上選取 [安裝 Message Queue 多語言套裝軟體] 核取方塊時,進行 Message Queue 4.1 本土化 RPM 安裝會失敗。安裝失敗是因為與之前的 3.7 UR1 安裝之 Il8 套裝軟體發生衝突。(錯誤 6594381)
解決方法:使用 rpm –e 指令手動移除本土化 RPM,再執行4.1 安裝程式。若要判斷此處相關的 RPM,請參閱「Sun Java System Message Queue 4.1 Installation Guide」中的「Message Queue Packages (RPMs)」。
這些問題會影響所有平台上的安裝作業。
當安裝程式正在安裝 Message Queue 4.1 並顯示 [進度] 畫面時,可使用 [取消] 按鈕。此時選取 [取消] 按鈕會導致安裝不完整或中斷。(錯誤 6595578)
安裝程式的 [摘要] 畫面包含數個連結,按一下即可啟動記錄或摘要頁面檢視器。若使用視窗的關閉按鈕「X」而非標示為 [關閉] 的按鈕來關閉此檢視器視窗,將無法再次顯示此檢視器視窗。(錯誤 6587138)
解決方法:使用標示為 [關閉] 的按鈕關閉視窗。
當系統的 Message Queue 與 NSS/NSPR 均為舊版時,安裝程式的升級僅會列出 Message Queue 需要升級,而不會提及 NSS/NSPR 需要升級。僅 [更新] 畫面存在此問題,因為所有相關的軟體都將當做安裝程序的一部分進行升級 (如顯示正確資訊的 [準備好要安裝] 畫面所示)。(錯誤 6580696)
解決方法:不需要,因為如果 NSS/NSPR 檔案不是最新的檔案,便會解除安裝舊版並安裝新版。
當安裝程式或解除安裝程式以文字模式 (installer –t ) 執行時,[摘要] 畫面會顯示包含記錄/摘要檔案的目錄,但不會列出這些檔案的名稱。(錯誤 6581592)
指定不存在檔案的名稱時,會產生不一致且不清楚的錯誤訊息。(錯誤 6587127)
安裝程式會以不易理解的格式顯示 Message Queue 的版本資訊。(錯誤 6586507)
在 Solaris 平台上,請參照下表以判斷所安裝的版本。
表 1–11 版本格式
安裝程式所顯示的版本 |
Message Queue 的發行版本 |
---|---|
4.1.0.0 |
4.1 |
3.7.0.1 |
3.7 UR1 |
3.7.0.2 |
3.7 UR2 |
3.7.0.3 |
3.7 UR3 |
3.6.0.0 |
3.6 |
3.6.0.1 |
3.6 SP1 |
3.6.0.2 |
3.6 SP2 |
3.6.0.3 |
3.6 SP3 |
3.6.0.4 |
3.6 SP4 |
針對 3.6 SP4 的修補程式版本 (例如 3.6 SP4 Patch 1),安裝程式顯示的發行版本字串會維持不變。您需要執行指令 imqbrokerd –version 以判斷實際版本。
在 Linux 平台上無法提供簡易格式轉換。安裝程式顯示在 Linux 上的版本編號使用下列格式。
<majorReleaseNumber>.<minorReleaseNumber>-<someNumber>
例如,3.7–22。這表示其為 3.7 發行版本的其中之一,但未指定是哪一個特定版本。若要判斷特定版本,請執行指令 imqbrokerd —version。
下列問題與本土化問題相關。
當安裝程式在非英文語言環境中以文字模式 (installer –t ) 執行時,多位元組字元會顯示為亂碼。(錯誤 6586923)
安裝程式的 [摘要] 畫面可讓使用者檢視摘要報告。但是,若安裝程式執行於多位元組的語言環境中,則此報告 (HTML 頁面) 會顯示亂碼。(錯誤 6587112)
解決方法:編輯 HTML 檔案以修正其中指定的字元集。HTML 檔案應包含如下的內容。
meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8
以 locale_name.UTF-8 取代「UTF-8」。例如,Solaris 上的 ja_JA.UTF-8 或 ko.UTF-8;Linux 上的 ja_JA.utf8 或 ko_KO.utf8。
安裝程式 [進度] 畫面上的進度列顯示亂碼。工具提示在非英文的語言環境中為程式內定。(錯誤 6591632)
Windows 上不支援文字模式 (installer –t)。在 Windows 上以文字模式執行安裝程式會出現錯誤訊息。即使安裝程式在非英文的語言環境中執行,此訊息還是不會本土化。(錯誤 6594142)
不論安裝程式執行的語言環境為何,安裝程式的 [授權] 畫面皆會顯示英文授權文字。(錯誤 6592399)
解決方法:若要存取本土化的授權檔案,請參閱 LICENSE_MULTILANGUAGE.pdf 檔案。
安裝程式用法說明文字並未本土化。(錯誤 6592493)
安裝程式摘要 HTML 頁面上顯示的字串「None」已程式內定為英文。(錯誤 6593089)
法語以外語言環境的版權頁未本土化。(錯誤 6590992)
當安裝程式在德文語言環境中執行時,[歡迎] 畫面無法顯示其他語言環境中所示的完整文字。(錯誤 6592666)
安裝程式的 [安裝主目錄] 畫面上所示的字串「Install Home」並未本土化。即使安裝程式在非英文的語言環境中執行,還是會顯示為英文。(錯誤 6592491)
當安裝程式以文字模式 (installer –t ) 執行時,不論安裝程式執行的語言環境為何,皆會使用英文回應選項「Yes」和「No」。(錯誤 6593230)
安裝程式的 [JDK 選擇] 畫面上的瀏覽按鈕工具提示已程式內定為英文。(錯誤 6593085)
在 Message Queue 之前的版本中,可以在下列指令中使用 —p 或 —password 選項,以互動方式指定密碼:imqcmd、imqbrokerd 和 imdbmgr。自 4.0 版起,這些選項已停用。您必須依下列方式提供密碼。
在僅用於儲存密碼的檔案中,將密碼特性設定為所需的值。
使用下列語法指定密碼檔案中的密碼。
PasswordPropertyName= MyPassword
使用 —passfile 選項傳遞密碼檔案的名稱。
密碼檔案可包含下列一或多個密碼。
用於開啟 SSL 金鑰庫的金鑰庫密碼。使用 imq.keystore.password 特性指定此密碼。
用來與 LDAP 目錄進行安全連線的 LDAP 儲存庫密碼 (若連線不是匿名)。使用 imq.user_repository.ldap.password 特性指定此密碼。
用來連線至 JDBC 相容資料庫的 JDBC 資料庫密碼。使用 imq.persist.jdbc.vendorName.password 特性指定此密碼。特性名稱的 vendorName 元件是指定資料庫供應商的變數。選項包含 hadb、derby、pointbase、oracle 或 mysql。
imqcmd 指令 (可執行代理程式管理作業) 的密碼。使用 imq.imqcmd.password 特性指定此密碼。
在下列範例中,JDBC 資料庫的密碼會設定為 abracadabra。
imq.persist.jdbc.mysql.password=abracadabra
您可以配置代理程式使用以下列方式建立的密碼檔案。
設定代理程式之 config.properties 檔案中的下列特性。
imq.passfile.enabled=true |
imq.passfile.dirpath=MyFileDirectory |
imq.passfile.name=MyPassfileName |
使用 imqbrokerd 指令的 —passfile 選項。
imqbrokerd —passfile MyPassfileName
本節涵蓋 Message Queue 4.1 中的一般問題。其中部分問題已在 Message Queue 之前的版本中出現。
當使用 HTTP 傳輸的 JMS 用戶端突然終止 (例如,使用 Ctrl-C) 時,代理程式將需要大約一分鐘來釋放用戶端連線以及所有相關的資源。
如果一分鐘內有其他用戶端實例啟動,且其嘗試使用相同的 ClientID、長期訂閱或佇列,則可能會收到「用戶端 ID 已在使用」異常。這不是實際發生的問題,它只是上述終止程序的副作用。如果用戶端在延遲大約一分鐘後啟動,則所有作業均可正常執行。
SOAP 用戶端。之前用以參照 mail.jar 和 mail.jar 的 SAAJ 1.2 實作 JAR 並不需要在 CLASSPATH 中。在 SAAJ 1.3 中已移除此參照;因此,Message Queue 用戶端必須將 mail.jar 明確置於 CLASSPATH 中。
下列問題與 Message Queue 的管理及配置相關。
Windows 機器上的 CLASSPATH 中若包含雙引號,則 imqadmin 和 imqobjmgr 公用程式會丟出錯誤 (錯誤 ID 5060769)。
解決方法:您可忽略此錯誤訊息;代理程式會正確地通知用戶所發生的任何錯誤。該錯誤不會影響系統的可靠性。
若提供的值包含空格,則所有 Solaris 與 Windows 程序檔中的 -javahome 選項均無法使用 (錯誤 ID 4683029)。
Message Queue 指令與公用程式使用 javahome 選項,以指定使用哪個替代的 Java 2 相容執行階段。但是,替代 Java 執行階段的路徑名稱不得包含空格。以下是路徑包含空格的範例。
Windows:C:/jdk 1.4
Solaris: /work/java 1.4
解決方法:將 Java 執行階段安裝在不包含空格的位置或路徑中。
imqQueueBrowserMaxMessagesPerRetrieve 屬性指定瀏覽佇列內容時,用戶端執行階段一次可擷取的最大訊息數。請注意,用戶端應用程式始終會擷取佇列上的所有訊息。因此,imqQueueBrowserMaxMessagesPerRetrieve 屬性會影響傳送到用戶端執行階段的佇列訊息分塊方式 (分成數目較少的大型資料塊,或數目較多的小型資料塊),但不會影響所瀏覽的總訊息數。變更此屬性的值可能會影響效能,但不會導致用戶端應用程式取得更多或更少的資料 (錯誤 ID 6387631)。
下列問題會影響 Message Queue 代理程式。
使代理程式執行循環傳送作業的配置方式有些混亂。解決方法很容易且可配置。
將目標屬性 maxNumActiveConsumers 設定為 -1。如此會啟用循環傳送。
將目標屬性 consumerFlowLimit 設定為 1。如此會指定傳送進行到下一個用戶之前,傳送到單一用戶的訊息數。如需不同的資料分塊方式,請將此屬性設定為所需的值。預設會傳送一百則訊息給每個用戶。
當永久存放區開啟過多目標時,代理程式會變得無法存取。(錯誤 ID 4953354)。
解決方法:這種情況是由於代理程式達到系統開啟檔案描述元限制引起的。在 Solaris 和 Linux 上使用 ulimit 指令來增加檔案描述元的限制。
目標若已銷毀,會孤立用戶 (錯誤 ID 5060787)。
目標若已銷毀,會孤立使用中的用戶。一旦使用者被孤立,則無法再接收訊息 (即使目標重新建立)。
解決方法:此問題沒有解決方法。
下列問題會影響叢集代理程式。
此版本僅支援完全連線的代理程式叢集。這意味著,叢集中的每個代理程式必須與叢集中的每個其他代理程式直接通訊。如果您要使用 imqbrokerd -cluster 指令行引數連線代理程式,請務必小心以確保包含叢集中的所有代理程式。
使用 HADB 的代理程式無法處理大於 10 MB 的訊息。(錯誤 6531734)
如果用戶端連線至高可用性代理程式,用戶端執行階段會嘗試重新連線直到成功為止 (不論 imqAddressListIterations 的值設定為何)
如果用戶端連線到屬於某個叢集的代理程式,則目前無法使用 QueueBrowser 瀏覽位於該叢集中遠端代理程式的佇列。用戶端僅能瀏覽與代理程式直接連線的佇列內容。用戶端仍可傳送訊息到任何佇列,或是自叢集中任何代理程式的佇列產生訊息;其限制僅會影響瀏覽。
在傳統叢集中,如果需要將 4.1 版代理程式和 3.x 版代理程式組成叢集,您必須為 4.1 版代理程式設定特性 imq.autocreate.queue.maxNumActiveConsumers=1。否則,代理程式將無法建立叢集連線。
轉換成高可用性叢集時,您可以使用 Message Queue 管理員公用程式 (imqdbmgr),將現有的獨立 HADB 永久性資料存放區轉換成共用 HADB 存放區。指令如下。
imqdbmgr upgrade hastore
您可以在下列情況中使用此公用程式。
從 4.0 版獨立 HADB 存放區改用 4.1 版共用 HADB 存放區。在此情況中,代理程式會自動升級存放區。您接著可執行 imqdbmgr 指令,將升級的資料存放區轉換成共用存放區。
從 4.1 版獨立 HADB 存放區改用共用 HADB 存放區。在此情況中,僅需要執行上述的 imqdbmgr 指令即可將資料存放區轉換成共用存放區。
由於此指令僅支援 HADB 存放區的轉換,因此無法用於將檔案式存放區或其他 JDBC 存放區轉換成共用 HADB 存放區。若之前執行 Message Queue 3.x 版,則為了使用高可用性功能,必須建立 HADB 存放區,然後手動將您的資料遷移至該存放區。
若存放區存留的訊息超出 10,000 則,則使用指令 imqdbmgr upgrade hastore 轉換成 HADB 存放區可能會失敗,並顯示訊息「設定太多鎖定」。(錯誤 ID 6588856)
(解決方法) 使用下列指令增加鎖定數。
hadbm set NumberOfLocks=<desiredNumber>
如需其他資訊,請參閱「Sun Java System Application Server 9.1 Enterprise Edition Troubleshooting Guide」中的「HADB Problems」。
如果某項作業事件確定了 500 則以上的遠端訊息,則代理程式可能會傳回錯誤訊息「HADB-E-12815:表格記憶體空間已用盡。」 (錯誤 ID 6550483)
如需其他資訊,請參閱「Sun Java System Application Server 9.1 Enterprise Edition Troubleshooting Guide」中的「HADB Problems」。
在代理程式叢集中,代理程式會將訊息排入尚未啟動之遠端連線的佇列中 (錯誤 ID 4951010)。
解決方法:只要啟動連線,用戶便會收到訊息。如果用戶連線關閉,訊息會重新傳送至其他的用戶。
在一項作業事件中使用多則遠端代理程式傳送的訊息時,代理程式可能會記錄下列錯誤訊息。該訊息無害,可以忽略:
[26/Jul/2007:13:18:27 PDT] WARNING [B2117]: Message acknowledgement failed from mq://129.145.130.95:7677/?instName=a&brokerSessionUID=3209681167602264320: ackStatus = NOT_FOUND(404)\ Reason = Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed. AckType = MSG_CONSUMED MessageBrokerSession = 3209681167602264320 TransactionID = 3534784765719091968 SysMessageID = 8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690 ConsumerUID = 3534784765719133952\par [26/Jul/2007:13:18:27 PDT] WARNING Notify commit transaction [8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690, [consumer:3534784765719133952, type=NONE]] TUID=3534784765719091968 got response: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.r
在一項作業事件中,如果 imq.txn.reapLimit 特性的值比該作業事件的遠端訊息數小,則會在通知訊息主機代理程式確定該作業事件中的後續訊息時,記錄此訊息。(錯誤 6585449)
解決方法:若要避免此訊息,請增加 imq.txn.reapLimit 特性的值。
在 Windows 平台上,作業事件管理器監視 MBean 的 getTransactionInfo 方法,會傳回作業事件建立時間不正確的作業事件資訊 (錯誤 ID 6393359)。
解決方法:請改用作業事件管理器監視 MBean 的 getTransactionInfoByID 方法。
您必須瞭解與 SOAP 支援相關的兩個問題。
自 Message Queue 4.0 版發行以來,已停止對 SOAP 受管理物件的支援。
SOAP 開發相依於數個檔案:SUNWjaf、SUNWjmail、SUNWxsrt 和 SUNWjaxp。在 Message Queue 4.1 版中,只有使用 JDK 1.6.0 版或更新版本執行 Message Queue 時,才可使用這些檔案。