Message Queue 4.4 Update 1 包含新的錯誤修正,且合併 Message Queue 4.x 系列舊版中已修正的錯誤。
以下各節列出各發行版本中已修正的錯誤:
下表說明 Message Queue 4.4 Update 1 中已修正的錯誤。某些問題標有「(OpenMQ)」,這表示此問題已在 Open Message Queue 開放原始碼專案 (Sun GlassFish Message Queue 以它為基礎) 中得到修正。
表 1–7 Message Queue 4.4 Update 1 中已修正的錯誤| 錯誤 | 說明 | 
|---|---|
| 6590909 | 當覆寫位址清單時,DIRECT 模式 MDB 未連線至遠端代理程式 | 
| 6616704 | 當在階段作業中建立多個用戶時,代理程式記憶體會增加 | 
| 6745761 | 當在同一 XA TX 中使用兩個連線時 (使用 JMSJCA),XAResource.isSameRM() 應傳回 true | 
| 6745763 | 當在同一 XA TX 中使用兩個連線時 (JMSRA DIRECT 模式),XAResource.isSameRM() 應傳回 true | 
| 6745768 | 當在同一 XA TX 中使用兩個連線時 (JMSRA LOCAL/REMOTE),XAResource.isSameRM() 應傳回 true | 
| 6760450 | 如果在未停止 MQ (GF) 實例的情況下重新開機,訊息儲存區會損毀 | 
| 6766241 | UMS:SendMsg.html AJAX 範例將 /ums 作為預設環境根目錄使用。它應使用 /imqums | 
| 6766852 | DirectXAResource 將代理程式 CONFLICT 狀態轉換為「TxID 已在使用」 | 
| 6799428 | DMQ 中的非永久訊息/非持續儲存的訊息無法使用,但可以瀏覽。 | 
| 6799428 | DMQ 中的非永久訊息/非持續儲存的訊息無法使用,但可以瀏覽。 | 
| 6809353 | 使用 posgtresql (8.1) 的 openmq 4.3 HA 無法正常運作 (imqbrokerd 無法啟動 ) | 
| 6809750 | 用戶端 ID 連線無法透過 JMSRA 執行連線池儲存。 | 
| 6812198 | 使用 MQ 主題度量進行監視時,會擲回 Classcast 異常 | 
| 6832000 | MQ reapExcessConnection JDBC 連線使 CPU 高速運轉 | 
| 6833109 | MQClusterMonitor JMX 範例應用程式會在使用 JDK6 的 AIX 上擲回異常 | 
| 6835420 | NoGCDefault 的預設值計算錯誤。當記憶體不足時,可能會導致 GC 過多。 | 
| 6852018 | 錯誤訊息「無法增加長期用戶 {0}。連線中未設定用戶端 ID。」會產生誤導 | 
| 6856991 | 在代理程式重新啟動,然後回復長期用戶 PREPARED 作業事件後,發生 NullPointerException | 
| 6874125 | 警告:MQJMSRA_DC2001:connectionId=555670328604044289:_destroy():對尚未關閉的連線呼叫 | 
| 6878945 | RFE:JMSBridge:可讓您指定使用者名稱/密碼以從連線工廠建立連線 | 
| 6881493 | 不應該為 HA 代理程式儲存管理暫時目標 | 
| 6881753 | RFE JMSBridge:可讓您在將每則訊息傳送至目標之前,以 jmsbridge 名稱對其進行標記 | 
| 6884673 | MQ 4.4 代理程式無法與 MQ 3.7/3.6 代理程式建立叢集連線 | 
| 6886390 | 當從 DMQ 使用訊息時,傳送至 DMQ 的永久/Txn 發佈的訊息可能會導致「找不到 mq.sys.dmq」錯誤 | 
| 6886515 | 當使用 JMX 來刪除內嵌式代理程式中的目標時,發生 AccessControlException | 
| 6890628 | 設定代理程式特性「imq.autocreate.destination.isLocalOnly=true」未生效 | 
| 6891615 | 當在 glassfish 中執行代理程式 4.3 時,選擇器並非始終正常運作 | 
| 6891624 | 「imqcmd list dst」中的「Remote」訊息數可能變得大於「Count」 | 
| 6891629 | 當選擇器中發生算數異常時,需要使用者容易讀懂的訊息 | 
| 6891717 | 若 imq.transaction.autorollback=true,則未清除自動回復 PREPARED 確認會導致 TransactionAckExistEx | 
| 6891802 | 接管遠端 tx 確認之後重新啟動代理程式時,顯示「[B4061]:無法使用作業事件 ID...目前正在使用中」 | 
| 6892512 | 記憶體發生錯誤:呼叫 tempDest.delete() 時,未將「臨時目標」從連線中移除 | 
| 6895040 | 如果主代理程式有臨時目標,從屬代理程式在 uidprefix 鎖定逾時後,無法啟動 uidprefix | 
| 6896230 | 在與從屬代理程式同步之後重新啟動主代理程式時,於主代理程式上建立的新用戶無法傳播給所有從屬代理程式 | 
| 6896764 | TransactionAcknowledgement 的 equals 方法不正確。 | 
| 6898355 | 重新啟動代理程式時,在叢集管理員初始化過程中會重設接管鎖定,且不等待接管完成 | 
| 6901405 | RFE:記錄 JDBC 供應商資訊與供應商內容 (若已指定) | 
| 16 (OpenMQ) | 當在 glassfish 中執行代理程式 4.3 時,選擇器並非始終正常運作 | 
| 17 (OpenMQ) | 使用 posgtresql (8.1) 的 openmq 4.3 HA 無法正常運作 (imqbrokerd 無法啟動 ) | 
| 22 (OpenMQ) | 安裝程式參考非現有二進位檔案,且失敗 | 
| 25 (OpenMQ) | 建立 TemporaryTopic 時,記憶體發生錯誤。 | 
| 29 (OpenMQ) | 代理程式隔離 | 
| 30 (OpenMQ) | 「imqcmd list dst」中的「Remote」訊息數可能變得大於「Count」 | 
| 31 (OpenMQ) | 當選擇器中發生算數異常時,需要使用者容易讀懂的訊息 | 
| 32 (OpenMQ) | 修正整數 -> 長整數的溢位 | 
| 33 (OpenMQ) | OpenMQ 安裝程式:在日文語言環境下執行時,發生「無效的 SwiXML 描述元」錯誤 | 
下表說明 Message Queue 4.4 中已修正的錯誤。
表 1–8 Message Queue 4.4 中已修正的錯誤| 錯誤 | 說明 | 
|---|---|
| 6242247 | 若兩個同名的代理程式位在同一部機器上,MQ 叢集中的主代理程式會啟動並當機。 | 
| 6760937 | 代理程式若重新啟動,不會重新連線至 DB。 | 
| 6763252 | 確認已過期/移除的訊息時,代理程式應該記錄 NPE 以外的有意義訊息 | 
| 6765410 | 主代理程式會傳送 2 次本機 Interest,造成已在使用中之長期訂閱的從屬異常。 | 
| 6796506 | 接收遠端 PREPARE 回覆發生逾時狀況時,遠端 PREPARED 訊息未在回復之後重新傳送。 | 
| 6807708 | 如果主代理程式未執行,TemporaryDestination.delete 失敗 | 
| 6812037 | RFE:如果 MQMessageListenerFunc 傳回錯誤,將 MQ_CALLBACK_RUNTIME_ERROR 傳至 afterMessageDelivery | 
| 6812755 | 如果 before/afterMessageDelivery 回呼傳回錯誤,FINE 層級記錄訊息應為「警告」 | 
| 6816023 | Message.setStringProperty() 異常無法顯示「非法字元」異常的特性名稱 | 
| 6819095 | RFE:叢集應該支援設定輸入/輸出串流緩衝區大小與 TcpNoDelay | 
| 6820585 | 在等候遠端代理程式完成時,「imqcmd list txn」無法顯示 COMMITTED 叢集作業事件 | 
| 6820588 | 消耗本機與遠端訊息的叢集作業事件在等待狀態下仍保持 COMMITTED | 
| 6821639 | 在 MQRA-DIRECT 模式之 AS 回復期間,回復/確定作業事件時發生 NPE | 
| 6823364 | RFE:將 C-API 編譯器升級為 Solaris 適用的 Sun Studio 12 | 
| 6829113 | 當 Tuxedo TM 在負載太大的情況下回復逾時的作業事件時,發生 ConcurrentModificationException | 
| 6832197 | 如果用戶端未要求 ackack,非作業事件性的遠端確認不應該等候遠端回覆 | 
| 6834735 | 當 Tuxedo TM 在 START 狀態下逾時 txn 時,收到容易造成混淆的記錄訊息「未預期的代理程式內部錯誤」 | 
| 6836364 | 若萬用字元用戶的主題建立於用戶之前,該用戶就不會接收遠端訊息。 | 
| 6836691 | HA(JCAPS):XA 接收器回復然後確定訊息之後,接收時發生「訊息已移除」異常 | 
| 6836749 | HA(JCAPS):在 1 項長期訂閱回復之後才確定訊息,再次接收訊息時即會發生「存放區中已存在確認」的異常狀況。 | 
| 6837671 | HA(JCAPS):XAResourceImpl.rollback 在成功確定後不停重新傳送已確定的訊息 | 
| 6839193 | RFE:將 C++ 編譯器升級為 Visual Studio 2008 SP1 | 
| 6845625 | 當不斷重複建立/關閉遠端用戶時,代理程式進入低記憶體的狀態 | 
| 6852207 | 將訊息傳送至遠端代理程式時發生的 NPE 導致遠端代理程式在讀取訊息封包時「無法處理訊息」 | 
| 6853822 | 當結束 FAILED txn 時,收到容易造成混淆的異常訊息「無法執行 END_TRANSACTION」 | 
| 6854142 | 每 3 分鐘對遠端代理程式報告一次「等待叢集連線」「已關閉叢集連線」 | 
| 6858121 | 如果遠端 txn 存在,關於「imqcmd list txn」的代理程式記錄中存在容易造成混淆的警告「不明作業事件」 | 
| 6858488 | 如果遠端參與者代理程式移除其 COMMITTED tx,COMMITTED txn 不會從 txn 本機代理程式中移除 | 
| 6858905 | Consumer.destroyConsumer 中的 ConcurrentModificationException | 
| 6861362 | RFE:JMSBridge:支援將目標物件的目標自動對映至來源 Message.getJMSDestination | 
| 6861528 | RFE:JMSBridge:允許 MessageTransformer.transform() 將訊息分支到目標物件中的不同目標 | 
| 6861653 | 傳送過多叢集 txn 資訊以確定較高 txn 負載之下不完全中斷的遠端代理程式 | 
| 6862413 | 容易造成混淆的記錄訊息「可在 60 秒內連線至 mq://xxx.xxx.xx.xx:pppp/ ...」 | 
| 6863867 | 如果存在來自中斷的遠端代理程式之擱置 COMMITTED,HA 代理程式重新啟動時會發生 MissingResourceException | 
| 6867596 | 如果代理程式再次重新啟動,在代理程式上次重新啟動之後恢復的 PREPARED txn 會回到 PREPARED 狀態 | 
| 6868525 | 建立連結時將臨時目標轉寄至遠端代理程式會導致發生 NullPointerException | 
| 6868578 | 某些廣播/單點傳送不檢查連結是否已建立,因此干擾連結訊號交換並導致連結中斷 | 
| 6871612 | HA:當在擱置代理程式中斷的情況下消耗遠端訊息時,會產生記錄訊息「無法通知作業事件完成..」 | 
| 6886391 | 如果已將訊息移除,確認訊息會導致發生 NullPointerException | 
下表說明 Message Queue 4.3 中已修正的錯誤。
表 1–9 Message Queue 4 中已修正的錯誤。3| 錯誤 | 說明 | 
|---|---|
| 6634033 | 叢集協定不會在建立用戶端時傳播 imqConsumerFlowLimit 值,以移除代理程式。 | 
| 6713012 | 如果在重新啟動遠端代理程式時銷毀叢集中代理程式上的用戶,可能會造成無法傳送部分訊息。 | 
| 6727555 | 代理程式記錄訊息「已超過每個訊息的位元組上限」的實際訊息大小和 [max bytes per message] 值對調。 | 
| 6737404 | JMX 度量必須提供已從目標 (主題及佇列) 派送,但尚未傳送至用戶的訊息計數。 | 
| 6740568 | 當單一作業事件中使用太多訊息時,代理程式會丟出異常。 | 
| 6758524 | 列出長期訂閱項目的 (imqcmd list dur -d "foo.*") 指令,不接受目標名稱中有萬用字元。 | 
| 6758952 | 設定 imq.portmapper.hostname=localhost 會造成代理程式無法連入叢集。 | 
| 6758817 | 設定 imq.cluster.hostname=localhost (不建議) 會造成不同機器上的代理程式無法連入叢集。 | 
下表說明 Message Queue 4.2 中已修正的錯誤。
表 1–10 Message Queue 4.2 中已修正的錯誤| 錯誤 | 說明 | 
|---|---|
| 6581592 | 當以文字模式執行安裝程式或解除安裝程式 (installer –t) 時,[摘要] 畫面會顯示包含記錄/摘要檔案的目錄,但不會列出這些檔案的名稱。 | 
| 6585911 | 安裝程式的 [JDK 選取] 畫面中包含由安裝程式隨附,且可用於執行安裝程式的 JRE;這是錯誤的。 | 
| 6587112 | 安裝程式摘要畫面於多位元組語言環境中出現亂碼。 | 
| 6587127 | 透過參照回覆檔 (installer -a filename -s) 執行安裝程式時,若回覆檔不存在,則錯誤訊息會不一致且不清楚。 | 
| 6590969 | 允許用戶端連線認證中的 DN 使用者名稱格式。 | 
| 6594381 | 若系統上存在舊版 Message Queue 本土化 RPM,則 Message Queue 4.1 本土化 RPM 的安裝 (在 [多語言套裝軟體] 畫面上選取 [安裝 Message Queue 多語言套裝軟體] 時) 會失敗。 | 
| 6599144 | 在 Java SE 6 上解除安裝 Message Queue 4.2 時,軟體資訊畫面與解除安裝程式會當機,且畫面會顯示空白與灰色,但 Java SE 5 則沒有此問題。 | 
| 6615741 | 若原始用戶在回復前關閉,則在已回復之作業事件用戶階段作業中傳送的訊息,即無法重新傳送。 | 
| 6629922 | 分散式作業事件處理程式無法依正確順序將訊息重新傳送至非使用中的用戶。 | 
| 6635130 | 代理程式無法在暫停後通知非永久性訊息的產生器繼續進行生產,因為目標已達到記憶體或訊息數上限。 | 
| 6641117 | 若原始用戶在回復後關閉,則在已回復之作業事件用戶階段作業中傳送的訊息,即無法重新傳送。 | 
| 6683897 | 即使配置似乎順利完成,Message Queue 安裝程式的摘要畫面仍會報告配置錯誤:安裝程式無法寫入某些電腦的 /dev/sterr。 | 
| 6684069 | 在代理程式叢集中,用戶作業事件中若有大量訊息傳送至遠端用戶端,則確定作業事件會失敗。 | 
| 6688935 | 連接埠對映器讀取逾時的預設值太小。 | 
| 6695238 | C 用戶端應用程式無法連線至安裝位置路徑中有空格的代理程式。 | 
| 6710168 | 若目標暫停兩次且暫停之間沒有重新繼續,則用戶無法再使用訊息。 | 
| 6710169 | JMX 作業 ConsumerManagerMonitor.getConsumerInfo 一律會在確認模式傳回 SESSION_TRANSACTED。 | 
下表說明 Message Queue 4.1 中已修正的錯誤。
表 1–11 Message Queue 4.1 中已修正的錯誤| 錯誤 | 說明 | 
|---|---|
| 6381703 | 已處理的遠端訊息可能在重新啟動產生訊息的代理程式時,再度確定。 | 
| 6388049 | 無法清除未完成的分散式作業事件。 | 
| 6401169 | imqcmd 的確定與回復選項不會提示進行確認。 | 
| 6473052 | 自動建立的佇列預設值應為循環。(MaxNumberConsumers = -1)。 | 
| 6474990 | 代理程式記錄會顯示 imqcmd list dst 指令的 ConcurrentModificationException。 | 
| 6487413 | 當運作方式為 REMOVE_OLDEST 或 REMOVE_LOWER_PRIORITY 時,記憶體會發生錯誤。 | 
| 6488340 | 代理程式進行循環,而用戶端則等候確認的回覆。 | 
| 6502744 | 代理程式不會遵循停用的訊息佇列的預設限制 (1000 則訊息)。 | 
| 6517341 | 用戶端執行階段必須改善重新連線邏輯,讓用戶端連線至強化的代理程式叢集時,不論 imqReconnectEnabled 特性的值為何,都允許用戶端重新連線。 | 
| 6528736 | Windows 自動啟動服務 (imqbrokersvc) 在啟動期間發生故障。 | 
| 6561494 | 當兩則訊息共用一個階段作業時,訊息會傳送到錯誤的用戶。 | 
| 6567439 | PREPARED 作業事件中產生的訊息若在重新啟動代理程式之後確定,傳送順序可能會亂掉。 | 
下表說明 Message Queue 4.0 中已修正的錯誤。
表 1–12 Message Queue 4.0 中已修正的錯誤| 錯誤編號 | 說明 | 
|---|---|
| 4986481 | 在 Message Queue 3.5 中,呼叫 Session.recover 時,可能會在自動重新連線模式中當機。 | 
| 4987325 | 在呼叫 Session.recover 之後,重新傳送訊息的重新傳送旗標會設定為 false。 | 
| 6157073 | 將新的連線訊息變更為不僅包含總連線數,還包含服務中的連線數。 | 
| 6193884 | Message Queue 在使用非 ASCII 字元顯示訊息的語言環境中,會將垃圾字元訊息輸出至系統記錄。 | 
| 6196233 | 無法使用 JMSMessageID 選取訊息。 | 
| 6251450 | 叢集關機期間,遍歷 connectList 物件時發生 ConcurrentModificationException。 | 
| 6252763 | java.nio.HeapByteBuffer.putLong/Int 中發生 java.nio.BufferOverflowException。 | 
| 6260076 | 使用 Oracle 儲存,自代理啟動第一則訊息發佈後,訊息發佈變慢。 | 
| 6260814 | 處理 JMSXUserID 的選擇器一律視為 false。 | 
| 6264003 | 佇列瀏覽器會顯示屬於未確定作業事件的訊息。 | 
| 6271876 | 連線流量控制在關閉具有未使用訊息的用戶時,無法正常運作。 | 
| 6279833 | Message Queue 不應該允許兩個代理程式使用相同的 jdbc 表格。 | 
| 6293053 | 若變更系統的 IP 位址,則主代理程式不會正確啟動,除非已清除存放區 (使用 -reset store)。 | 
| 6294767 | Message Queue 代理程式需要在它開啟的網路通訊端上設定 SO_REUSEADDR。 | 
| 6304949 | 無法設定 ClientID 特性 (屬於TopicConnectionFactory | 
| 6307056 | txn 記錄是效能瓶頸。 | 
| 6320138 | Message Queue C API 無法從回覆傳送標頭判斷佇列的名稱。 | 
| 6320325 | 在 Solaris 上,即使同時安裝了 JDK 1.4 與 JDK 1.5 版本,代理程式有時仍會先選擇 JDK 1.4。 | 
| 6321117 | 多個代理程式叢集初始化丟出 java.lang.NullPointerException。 | 
| 6330053 | 用戶確定作業事件時,JMS 用戶端會丟出 java.lang.NoClassDefFoundError。 | 
| 6340250 | C-API 支援 MESSAGE 類型。 | 
| 6351293 | 新增對 Apache Derby 資料庫的支援。 |