版本 4.4
文件號碼 821-0895
此版本說明包含 Sun GlassFish Message Queue 4.4 發行時所提供的重要資訊。其中包括新增功能和增強功能、已知的問題與限制以及其他資訊。使用 Message Queue 4.4 前,請先閱讀本文件。
此版本說明也包含有關 Message Queue 4.3、4.2、4.1 及 4.0 版的相關資訊。例如,如需這些發行版本新推功能的相關資訊,請分別參閱Message Queue 4.2 的新功能、Message Queue 4.1 的新功能及Message Queue 4.0 的新功能。
您可以在 Sun GlassFish Message Queue 文件網站中找到最新的版本說明:http://docs.sun.com/coll/1307.7。請在安裝和設定您的軟體前查閱此網站,並在安裝後定期查閱以檢視最新的版本說明和產品文件。
此版本說明包含下列各節︰
本文件中提供了協力廠商 URL 以供參考,另亦提供其他相關的資訊。
Sun 對本文件中提到的協力廠商網站的可用性不承擔任何責任。對於此類網站或資源中的 (或透過它們所取得的) 任何內容、廣告、產品或其他材料,Sun 並不表示認可,也不承擔任何責任。Sun 對於因使用或依靠此類網站或資源中的 (或透過它們所取得的) 任何內容、產品或服務而造成的或連帶產生的任何實際或名義上之損壞或損失,Sun 概不負責,也不承擔任何責任。
下表列出 Message Queue 產品所有 4.x 版的發行日期,並說明本文件中與每個發行版本相關的變更。
表 1–1 修訂歷程記錄
日期 |
變更說明 |
---|---|
2009 年 10 月 |
發行 Message Queue 4.4 的此文件。加入此發行版本的新功能說明。 |
2009 年 5 月 |
初次發行 Message Queue 4.4 Beta 的此文件。增加此發行版本的新功能。 |
2008 年 12 月 |
發行 Message Queue 4.3 的此文件。加入此發行版本的新功能說明。 |
2008 年 8 月 |
發行 Message Queue 4.2 的此文件。加入此發行版本的新功能說明。 |
2007 年 9 月 |
Message Queue 4.1 版的本文件第 3 版。增加對 Java Enterprise System Monitoring Framework 的支援、固定 C 連接埠、錯誤修正及其他功能的說明。 |
2007 年 4 月 |
Message Queue 4.1 Beta 文件的再版。增加高可用性功能。 |
2007 年 1 月 |
Message Queue 4.1 Beta 文件的初期測試版。增加有關 JAAS 支援的說明。 |
2006 年 5 月 |
Message Queue 4.0 文件的初期測試版。 |
Sun GlassFish Message Queue 為具有全方位功能的訊息服務,提供可靠的非同步訊息傳送能力,符合 Java Messaging Specification (JMS) 1.1 規格。此外,Message Queue 還提供多種超越 JMS 規格的功能,可滿足大型企業的部署需求。
Message Queue 4.4 是為加入 Sun GlassFish Application Server 2.1.1 版所建立的次要發行版本。所以,不會發行可個別下載及安裝的 Message Queue 4.4 發行軟體。
本節涵蓋下列有關 Message Queue 4.4 系統需求的主題:
Solaris、Linux、Windows 及 AIX 作業系統平台都支援 Message Queue 4.4。表 1–2 將顯示每種平台所支援的版本。如需每種平台的硬體需求,請參閱「Sun GlassFish Message Queue 4.4 Installation Guide」。
表 1–2 支援的平台版本
系統虛擬是一種可讓多重作業系統 (OS) 實例在共用硬體上各自獨立執行的技術。在功能上,部署到位於虛擬環境中作業系統的軟體,一般不會察覺其基礎平台已虛擬化。Sun 已在所選系統虛擬和作業系統組合上測試其 Sun Java System 產品,以協助驗證 Sun Java System 產品是否可以繼續在適當大小且已配置虛擬化的環境中運作,如同在非虛擬化系統上一般執行作業。如需有關 Sun Java System 產品在虛擬環境中之 Sun 支援的資訊,請參閱 http://download.oracle.com/820-4651。
除了平台特定的需求之外,Message Queue 4.4 也必須先安裝特定基本元件,才可開發與執行 Message Queue 用戶端。表 1–3 將說明這些元件。您也可使用其他版本或供應商的實作,但這些版本或實作未經 Sun Microsystems 測試,因此不受正式支援。
適用於 Solaris、Linux 及 Windows 平台的 Message Queue 安裝程式,可讓您選取現有的 JDK/JRE 或安裝 JDK 版本 (1.5.0_15)。
元件 |
支援 | |
---|---|---|
Java 執行階段環境 (JRE) |
Message Queue 代理程式與管理工具 |
J2SETM Runtime Environment 1.5.0_15 或更新版本 JavaTM SE Runtime Environment 1.6.0_10 |
Java 軟體開發工具組 (JDK) 標準版 |
Java 用戶端開發與部署 |
J2SE Development Kit 1.5.0_15 或更新版本 Java SE Development Kit 1.6.0_10 |
表 1–4 顯示可安裝的其他元件,以進一步支援 Message Queue 用戶端。您並不需要列出的所有元件:例如,若不撰寫 C 用戶端,即不需要 C 編譯器、C++ 執行階段程式庫、NSPR 或 NSS。
表 1–4 選用的支援元件
下列各節將說明 Message Queue 4.4 及舊版 Message Queue 4.x 系列的新功能:
Message Queue 4.4 是包含數項增強功能與錯誤修正的次要發行版本。本節將說明此發行版本所包含的新功能:
因為 JMS 規格並未定義代理程式及用戶端之間通訊的線路協定,所以每一項 JMS 提供者 (包括 Message Queue) 均定義且使用自己的專屬協定。這種狀況導致 JMS 提供者之間無法互通。
Message Queue 4.4 的 JMS 橋接器服務,可讓 Message Queue 代理程式將自己的目標對映到外部 JMS 提供者的目標,藉以補其不足。此項對映能讓 Message Queue 代理程式與外部 JMS 提供者的用戶端進行通訊。
JMS 橋接器服務能夠對映具備以下條件的外部 JMS 提供者目標:
與 JMS 1.1 相容
支援 JNDI 管理物件
使用 javax.jms.ConnectionFactory 或 javax.jms.XAConnectionFactory 類型的連線工廠。
針對已完成作業的對映,支援以 XA 介面為資源管理員。
許多開放原始碼及商用 JMS 提供者都符合這些需求,這使得 JMS 橋接器服務能將 Message Queue 整合至使用其他 JMS 提供者的現有訊息傳送環境。
如需有關 JMS 橋接器服務的更多資訊,請參閱:
如需有關 JMS 橋接器服務之架構、子元件及功能的資訊,請參閱「Sun GlassFish Message Queue 4.4 Technical Overview」中的「JMS Bridge Service」。
如需有關在代理程式中配置與管理 JMS 橋接器的資訊,請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Configuring and Managing JMS Bridge Services」。
如前文所述,JMS 規格並未定義代理程式及用戶端之間的通訊線路協定。串流文字導向訊息傳送協定·(Streaming·Text·Oriented·Messaging·Protocol,·STOMP)·開放原始碼專案·(位於 http://stomp.codehaus.org??)·定義了一種簡易的線路協定,能讓以任何語言撰寫的用戶端使用,以便與支援·STOMP·協定的所有訊息傳送提供者通訊。
Message Queue 4.4 透過 STOMP 橋接服務支援 STOMP 協定。此項服務能讓 Message Queue 代理程式與 STOMP 用戶端通訊。
如需有關 STOMP 橋接器服務的更多資訊,請參閱:
如需有關 STOMP 橋接器服務之架構及功能的資訊,請參閱「Sun GlassFish Message Queue 4.4 Technical Overview」中的「STOMP Bridge Service」。
如需有關在代理程式中配置與管理 STOMP 橋接器的資訊,請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Configuring and Managing STOMP Bridge Services」。
Message Queue 4.4 也提供下列其他增強功能:
UMS 現備有利用 HTTP GET 提供數項服務的功能:
ssend:傳送簡單的文字訊息。
sreceive:接收簡單的文字訊息。
getBrokerInfo:擷取代理程式的相關資訊。
getConfiguration:擷取 UMS 配置的相關資訊。
debug:開啟及關閉 UMS 伺服器中的除錯記錄。
ping:與代理程式通訊,確認其正在執行中。
如需 UMS 簡介,請參閱通用訊息服務 (UMS)。如需 UMS API 的文件,請參閱 https://mq.dev.java.net/4.3-content/ums/protocol.html。如需多種語言的程式設計範例,請參閱 https://mq.dev.java.net/4.3-content/ums/examples/README.html。
Message Queue 現在使用開放原始碼的影像封裝系統 (Image Packaging System, IPS) (亦稱為 pkg(5) 系統) 封裝發行。之所以增加此封裝方法,是為了使 Message Queue 與 Sun GlassFish Enterprise Server 2.1.1 整合。
Message Queue 4.3 是包含數項增強功能及錯誤修正的次要發行版本。本節將說明此發行版本所包含的新功能:
Message Queue 4.3 採用新的通用訊息服務 (UMS),以及可從任何啟用 http 的裝置存取 Message Queue 的訊息傳送 API。因而幾乎所有應用程式皆可與其他應用程式通訊,並獲得 JMS 傳送穩定性提高及保證送達等優點。此外,UMS 也讓 JMS 訊息傳送功能的延展性更佳,讓訊息傳送用戶端的數量達到網際網路規模。
下圖顯示基本的 UMS 架構:
在 Web 伺服器中執行的 UMS 不受程式語言和平台限制。UMS 是所有非 JMS 用戶端應用程式及 JMS 提供者之間的閘道。UMS 會接收使用 UMS API 傳送的訊息、將其轉換成 JMS 訊息,再使用 JMS 提供者的原生協定,將訊息傳送至提供者的目標。同樣地,UMS 會從 JMS 提供者的目標中擷取訊息、將其轉換成文字或 SOAP 訊息,再根據用戶端請求,透過 UMS API 將訊息傳送至非 JMS 用戶端。
協定型的 UMS API 簡單且不受程式語言限制,支援 Web 及非 Web 應用程式,且可與程序檔及程式語言一起使用。此 API 有兩種型式:使用表象化狀態傳輸 (Representational State Transfer, REST) 樣式協定的簡單訊息傳送 API,以及將協定嵌入 SOAP 訊息標頭的 XML 訊息傳送 API。但在這兩種狀況下,API 傳送或接收訊息,都僅需要單一的 http 請求。
由於 UMS API 簡單又具彈性,因此 AJAX、.NET、Python、C、Java 及許多其他應用程式,都可將文字訊息及 (或) SOAP (具附件) 訊息傳送至 JMS 目標,或接收來自 JMS 目標的訊息。例如,Python 應用程式可與 .NET 應用程式通訊,iPhone 可與 Java 應用程式通訊等。
在 Message Queue 4.3 中,UMS 僅支援以 Message Queue 當作 JMS 提供者。
UMS 的功用不僅止於上述的簡單閘道,還支援有狀態及無狀態的用戶端階段作業。用戶端若提出請求,UMS 會在多項服務請求之間都維持用戶端應用程式的階段作業狀態。UMS 可使用以容器管理的認證,或配置成以 Message Queue 代理程式認證用戶端,或兩者都用。UMS 也支援作業事件,讓用戶端應用程式得以確定多項服務請求,或將其回復為單一不可分割的單元。
因為 UMS 支援大量用戶端以單一連線連接到 Message Queue 代理程式,所以可緩和代理程式連線服務的負載,以達到最佳的延展性。此外,您可水平擴充 UMS 的處理能力,允許網際網路規模的訊息傳送負載。
在用戶端部分,因為協定型 UMS API 非常簡單,因而不需要用戶端程式庫。所以,API 未來可擴充 API 以實作其他 JMS 功能,而不必升級用戶端應用程式。
若要使用 UMS,請將 UMS 部署至支援 Servlet 2.4 或更高規格的 Web 容器中,然後啟動 Message Queue 代理程式,再建立適當的目標,最後撰寫使用 UMS API 傳送或接收訊息的訊息傳送應用程式。
包含在 Message Queue 4.3 發行軟體中的 UMS imqums.war 檔案,安裝在下列因平台而異的位置中:
您可將 .war 檔案重新命名為適當的名稱。
表 1–5 imqums.war 檔案的位置
平台 |
imqums.war 的位置 |
---|---|
Solaris |
/usr/share/lib/imq |
Linux |
/opt/sun/mq/share/lib |
AIX |
IMQ_HOME/lib |
Windows |
IMQ_HOME\lib |
將 imqums.war 部署至位於 localhost:port 的 Web 容器之後,即可在下列位置找到 UMS 文件:
http://localhost:port/imqums
否則可找到 UMS 文件,如下所示:
如需有關配置 UMS 的資訊,請參閱 https://mq.dev.java.net/4.3-content/ums/config.html。
如需 UMS API 的文件,請參閱 https://mq.dev.java.net/4.3-content/ums/protocol.html。
如需多種語言的程式設計範例,請參閱 https://mq.dev.java.net/4.3-content/ums/examples/README.html。
下列 Web 容器目前都支援 UMS:
Sun GlassFish Enterprise Server 2.1 版及 3 Prelude 版
Tomcat 5.5 版及 6.0 版
Message Queue 4.3 提供 AIX 平台套裝軟體,以及安裝這些軟體的安裝程式。
Message Queue AIX 實作支援下列軟體:
AIX 6.1 版或較新版本 (舊版 AIX 是透過僅適用於 Unix/Java 的隨附式軟體支援)
DB2 支援
IBM XL C/C++ Compiler 9.0 版
JDK 1.5 或較新版本
如需安裝說明,請參閱「Sun GlassFish Message Queue 4.4 Installation Guide」中的第 4 章「AIX Installation」。
在 AIX 平台中,Message Queue 檔案會安裝在單一 Message Queue 的主目錄 IMQ_HOME 下。IMQ_HOME 表示目錄 mqInstallHome/mq,其中 mqInstallHome 為安裝產品時所指定的安裝主目錄 (預設為 home-directory /MessageQueue)。
所產生的 Message Queue 目錄結構與 Windows 平台的目錄結構相同 (請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的附錄 A「Platform-Specific Locations of Message Queue Data」之 Windows 一節)。
Message Queue 支援 AIX 平台,包括對 Message Queue C-API 的支援。如需在 AIX 平台上建立及編譯 C 應用程式的說明,請參閱 XREF。
Message Queue 4.3 採用新的 Zip 發行軟體安裝程式,與原生套裝發行軟體大相逕庭。此安裝程式的功能是安裝適用於 AIX 平台的 Message Queue .zip 新發行軟體。
新的安裝程式可將 Message Queue .zip 檔案解壓縮至您具有寫入存取權 (不需要超級使用者權限 ) 的任何目錄,也可讓您向 Sun Connection 註冊 Message Queue 安裝。
zip 發行軟體中已不再包含 Java Runtime (大部分的網站都已有),以將下載的隨附軟體大小減至最小。所以,installer 指令會要求以 JAVA_HOME 環境變數 (或在指令行使用 -j 選項) 指定 JDK 或 JRE,如下所示:
$ installer -j JDK/JRE-path
此處的 JDK/JRE-path 是指定的 JDK 或 JRE 路徑。
Message Queue 4.3 會申請下列更新平台的支援認證標章:
Oracle 11g
Windows Server 2008
Message Queue 4.3 包含下列其他增強功能:
Windows 平台上 Message Queue 的安裝目錄結構,已從舊版的結構修改成符合 AIX 平台的結構。Solaris 及 Linux 平台日後也將採用此目錄結構,以利在單一電腦上執行多項安裝作業,以及透過 Sun Connection 自動更新 Message Queue;Sun Connection 是可協助您追蹤、組織及維護 Sun 軟硬體的 Sun 代管服務 (請參閱Sun Connection 註冊的安裝程式支援)。
下列新特性可供配置代理程式使用:
表 1–6 代理程式路由及傳送特性
特性 |
類型 |
預設值 |
說明 |
---|---|---|---|
imq.transaction.producer.maxNumMsgs |
整數 |
1000 |
產生器在單一作業事件中可處理的訊息數上限。建議使用小於 5000 的值,以防止耗盡資源。 |
imq.transaction.consumer.maxNumMsgs |
整數 |
100 |
用戶在單一作業事件中可處理的訊息數上限。建議使用小於 1000 的值,以防止耗盡資源。 |
imq.persist.jdbc.connection.limit |
整數 |
5 |
資料庫可以開啟的連線數上限。 |
JMX API 已增加新屬性及複合資料索引鍵 ,如下所示:
目標監視 MBean 已增加 NextMessageID 屬性,提供下一則要傳送至用戶的郵件 JMS 訊息 ID。
用戶管理程式監視 MBean 已增加複合資料的 NextMessageID 索引鍵,提供下一則要傳送至用戶的郵件 JMS 訊息 ID。
用戶管理程式監視 MBean 已增加複合資料的 NumMsgsPending 索引鍵,提供已派送至用戶的郵件數目。
列出長期訂閱的指令:
list dur [-d topicName]
已經強化,因此已經不一定要指定主題名稱。若未指定主題,該指令會列出全部主題的所有長期訂閱 (包括使用萬用字元命名慣例者)。
Message Queue 4.2 是次要發行版本,包含數項新功能、一些增強功能,以及錯誤修正。本節說明 4.2 發行版本的新功能,並提供您可以使用的進一步參考資料:
如需有關 Message Queue 4.1 與 4.0 中推出之功能的資訊,請分別參閱Message Queue 4.1 的新功能與Message Queue 4.0 的新功能。
發佈程式利用 Message Queue 4.2 可將訊息發佈至多個主題目標,而用戶則可使用多個主題目標的訊息。使用包含萬用字元符號的主題目標名稱即可代表多個目標,進而達成此功能。使用這類符號名稱可讓管理員視需要建立與萬用字元命名方案一致的其他主題目標。發佈程式與訂閱者會自動發佈至增加的目標,以及從增加的目標進行取用 (萬用字元主題訂閱者比發佈程式更常用)。
此功能不會套用至佇列目標。
「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Supported Topic Destination Names」會說明符號主題目標名稱格式及其使用範例。
Message Queue 4.2 推出的此項新功能,可在將訊息傳送至代理程式時,根據 XML 模式驗證 XML 訊息的文字內容 (非物件內容)。XML 模式 (XSD) 的位置會指定為 Message Queue 目標的特性。若未指定任何 XSD 位置,則會使用 XML 文件中的 DTD 宣告,執行 DTD 驗證 (XSD 驗證包含資料類型與值範圍驗證,比 DTD 驗證嚴格)。
如需有關使用此功能的資訊,請參閱XML 有效負載訊息的模式驗證。
根據 X/Open 分散式作業事件模型,分散式作業事件的支援仰賴於分散式作業事件管理程式,此管理程式會追蹤並管理一或多個資源管理程式所執行的作業。Message Queue C-API 利用 Message Queue 4.2 支援 XA 介面 (介於分散式作業事件管理程式與 Message Queue 之間,作為 XA 相容資源管理員),可讓在分散式作業事件處理環境 (如 BEA Tuxedo) 中執行的 Message Queue C-API 用戶端,參與分散式作業事件。
此分散式作業事件支援包含實作 XA 介面規格時所使用的下列 C-API 新功能 (以及新參數與錯誤碼):
MQGetXAConnection() MQCreateXASession()
若 C 用戶端應用程式將用於分散式作業事件環境中,則必須透過使用 MQGetXAConnection() 取得連線,並透過使用 MQCreateXASession() 建立產生與使用訊息的階段作業管理所有分散式作業事件的啟動、確認與回復時,均透過分散式作業事件管理程式提供的 API。
如需使用分散式作業事件功能的詳細資訊,請參閱「Sun GlassFish Message Queue 4.4 Developer’s Guide for C Clients」中的「Working With Distributed Transactions」。
Message Queue 4.2 根據 Tuxedo 作業事件管理程式提供程式設計範例。如需有關使用這些程式範例的資訊,請參閱「Sun GlassFish Message Queue 4.4 Developer’s Guide for C Clients」中的「Distributed Transaction Sample Programs」。
Solaris、Linux 及 Windows 平台都支援分散式作業事件功能,但至今僅通過 Solaris 平台認證。
Message Queue 安裝程式已增強為可向 Sun Connection 註冊 Message Queue;Sun Connection 是協助您追蹤、組織及維護 Sun 軟硬體的 Sun 代管服務。
在 Message Queue 安裝過程中,可選擇是否要向 Sun Connection 註冊 Message Queue。已安裝之 Message Queue 的相關資訊 (如發行版本、主機名稱、作業系統、安裝日期及其他此類基本資訊) 會安全傳輸至 Sun Connection 資料庫。Sun Connection 資產管理服務可協助您管理 Sun 軟硬體,而更新服務則會通知您最新之可用安全性問題修正、建議更新及增強功能。
如需向 Sun Connection 註冊 Message Queue 的詳細資訊,請參閱「Sun GlassFish Message Queue 4.4 Installation Guide」。
Message Queue 4.2 推出以 MySQL 資料庫當作 JDBC 資料存放區的功能。MySQL Cluster Edition 可用作獨立代理程式的 JDBC 資料庫,以及強化之代理程式叢集所需之高可用性的共用資料存放區。如需有關配置 Message Queue 以使用 MySQL 的資訊,請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Configuring a JDBC-Based Data Store」以及「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Enhanced Broker Cluster Properties」。
Message Queue 4.2 除上述功能外,還包括下列增強功能:
遠端產生的訊息度量
Message Queue 4.2 採用新的目標度量,對監視代理程式叢集中的目標很有幫助。在代理程式叢集中,儲存在叢集內指定代理程式之指定目標的訊息,會包含直接產生至目標的訊息,以及從叢集中遠端代理程式傳送至目標的訊息。瞭解目標中的本機訊息數 (本機產生) 與遠端訊息數 (遠端產生),有時可有助於分析代理程式叢集中的訊息路由與傳遞。
Message Queue 4.2 包含兩個新的實體目標度量數量: [遠端訊息數] 及 [遠端訊息位元組總數]。新的度量數量可透過 imqcmd list dst 與 imqcmd query dst 指令取得 (請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Viewing Physical Destination Information」),也可透過新的 JMX 屬性取得 (請參閱「Sun GlassFish Message Queue 4.4 Developer’s Guide for JMX Clients」中的「Destination Monitor」)。
萬用字元產生器及萬用字元用戶資訊
新的監視資料會提供在目標名稱中使用萬用字元的支援資訊 (請參閱發佈程式或訂閱者的多個目標)。例如,萬用字元產生器數量或與目標相關之用戶數,都可透過 imqcmd query dst 指令取得 (請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Viewing Physical Destination Information」),也可透過新的 JMX 屬性取得 (請參閱「Sun GlassFish Message Queue 4.4 Developer’s Guide for JMX Clients」中的「Destination Monitor」)。此外,透過 ConsumerManager Monitor及 ProducerManager Monitor MBeans 亦可獲得萬用字元資訊。
Support for DN Username Format for Client Authentication
Message Queue 4.2 在根據 LDAP 使用者儲存庫進行用戶端連線認證時,支援 DN 使用者名稱格式。此支援包含下列新代理程式特性 (及值):
imq.user_repository.ldap.usrformat=dn
此特性可讓代理程式透過從 DN 使用者名稱格式中擷取下列特性所指定的屬性值,以根據 LDAP 使用者儲存庫中的項目,認證用戶端使用者:
imq.user_repository.ldap.uidattr
代理程式使用上述屬性值,作為存取控制作業中的使用者名稱。
例如,若 imq.user_repository.ldap.uidattr=udi 與用戶端認證使用者名稱使用 udi=mquser,ou=People,dc=red,dc=sun,dc=com 格式,則會擷取「mquser」以執行存取控制。
JAAS Authentication Enhancement
Message Queue 4.2 推出依據 IP 位址及使用者名稱進行 JAAS 認證的功能。
Message Queue 4.1 是次要發行版本,包含數項新功能、一些增強功能,以及錯誤修正。本節說明 4.1 發行版本的新功能,並提供您可以使用的進一步參考資料:
如需有關 Message Queue 4.0 中推出之功能的資訊,請參閱Message Queue 4.0 的新功能。
Message Queue 4.1 推出新的強化代理程式叢集。傳統代理程式叢集僅提供訊息傳送服務可用性功能 (若代理程式失敗,可使用其他代理程式提供訊息傳送服務) ,相較之下,強化的代理程式叢集還提供資料可用性 (若代理程式失敗,其他代理程式可使用其永久性訊息與狀態資料以接管訊息傳送工作)。
Message Queue 4.1 推出的高可用性實作,使用共用的 JDBC 資料存放區:代理程式叢集中的每個代理程式沒有獨立永久資料存放區,而是由叢集中的所有代理程式共用一個 JDBC 相容資料庫。若某個特定的代理程式故障,叢集中的其他代理程式會代替故障的代理程式發送訊息。由此,容錯移轉代理程式即可使用共用資料存放區中的資料與狀態資訊。失敗之代理程式的訊息傳送用戶端會重新連線至容錯移轉代理程式,以提供不間斷的訊息傳送服務。
Message Queue 4.1 高可用性實作中所使用的共用 JDBC 存放區本身必須也具備高可用性。若沒有高度可用的資料庫,或者訊息傳送不中斷對您而言不重要,則可繼續使用傳統叢集,其提供不包含資料可用性的服務可用性。
若要配置 Message Queue 4.1 強化代理程式叢集,請為叢集中的每個代理程式指定下列代理程式特性:
叢集成員身份特性可指定代理程式位於強化的代理程式叢集、叢集的 ID 與叢集中的代理程式 ID。
高度可用的資料庫特性可指定永久性資料模型 (JDBC)、資料庫供應商的名稱與各供應商的配置特性。
失敗偵測與容錯移轉特性可指定如何偵測代理程式失敗,以及如何使用容錯移轉代理程式處理失敗。
若要使用強化的代理程式叢集實作,必須執行下列作業:
安裝高可用性資料庫。
安裝 JDBC 驅動程式 .jar 檔案。
為高度可用的永久資料存放區建立資料庫模式。
為叢集中的每個代理程式設定高可用性特性。
啟動叢集中的每個代理程式。
如需有關強化之代理程式叢集的概念性討論,及其與傳統叢集之比較,請參閱「Sun GlassFish Message Queue 4.4 Technical Overview」中的第 4 章「Broker Clusters」。如需有關強化代理程式叢集的逐步說明及參考資訊,請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的第 10 章「Configuring and Managing Broker Clusters」與「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Cluster Configuration Properties」。
若搭配 Message Queue 4.0 使用高可用性的資料庫,且想切換成強化的代理程式叢集,可使用資料庫管理者公用程式 (imqdbmgr) 轉換為共用的永久資料存放區。另請參閱代理程式叢集,以深入瞭解已知問題與限制。
除了檔案式與 LDAP 式內建認證機制之外,Message Queue 4.1 也推出 Java 認證與授權服務 (JAAS) 的支援,可讓您將外部認證機制外掛到代理程式,以認證 Message Queue 用戶端。
如需了解代理程式提供給 JAAS 相容認證服務的資訊,以及如何配置代理程式以使用此類服務的說明,請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Using JAAS-Based Authentication」。
Message Queue 4.1 已變更 JDBC 資料存放區,以支援強化的代理程式叢集。因此,410 版增加了 JDBC 資料存放區格式。格式版本 350、370 及 400 會自動遷移至 410 版。
請注意,由於檔案式永久資料存放區的格式沒有任何變更,因此其格式會保持為 370 版。
Message Queue 4.1 環境配置檔案 imqenv.conf 中已增加特性 IMQ_DEFAULT_EXT_JARS。您可以設定此特性,以指定在啟動代理程式時,將外部 .jar 檔案的路徑名稱納入 CLASSPATH。若使用此特性指定外部 .jar 檔案的位置,則不再需要將這些檔案複製到 lib/ext 目錄。外部 .jar 檔案可參照 JDBC 驅動程式或 JAAS 登入模組。下列特性範例指定 JDBC 驅動程式的位置。
IMQ_DEFAULT_EXT_JARS=/opt/SUNWhadb4/lib/hadbjdbc4.jar:/opt/SUNWjavadb/derby.jar
Message Queue 4.1 推出 Sun Java Enterprise System (Java ES) Monitoring Framework 的支援,可使用共用圖形介面監視 Java ES 元件。此介面利用名為「Sun Java System Monitoring Console」的網路型主控台實作。管理員可使用 [主控台] 檢視效能統計、建立自動監視的規則,以及確認警報。若執行 Message Queue 的同時也執行其他 Java ES 元件,可能會發現使用單一介面管理所有元件比較方便。
如需有關使用 Java ES Monitoring Framework 監視 Message Queue 的資訊,請參閱 XREF。
在舊版中,只有處於 PREPARED 狀態的作業事件可以由管理員回復。換言之,若屬於分散式作業事件的階段作業未正常終止,作業事件將繼續處於管理員無法清除的狀態。現在於 Message Queue 4.1 中,可使用指令公用程式 (imqcmd) 清除 (回復) 下列狀態的作業事件:STARTED、FAILED、INCOMPLETE、COMPLETE 及 PREPARED。
為協助您判斷是否可回復特定的作業事件 (特別是當它不為 PREPARED 狀態時),指令公用程式會提供額外的資料,作為 imqcmd query txn 輸出的一部分:它會提供啟動該作業事件的連線 ID,並明確說明作業事件的建立時間。管理員可使用此資訊,決定是否需要回復作業事件。一般說來,管理員應避免提前回復作業事件。
在 Message Queue 4.1 中,C 用戶端 (例如 Java 用戶端) 現在可連線至固定代理程式連接埠,而不是由代理程式的連接埠對映器服務動態指定的連接埠。若嘗試通過防火牆,或是若基於某些其他原因需要略過連接埠對映器服務,固定連接埠連線會很有用。
若要配置固定連接埠連線,必須同時配置代理程式與 C 用戶端執行階段 (連線的兩端)。例如,若需要透過 ssljms 將用戶端連線至連接埠 1756,請執行下列作業:
在用戶端上,設定下列特性:
MQ_SERVICE_PORT_PROPERTY=1756
MQ_CONNECTION_TYPE_PROPERTY=SSL
在代理程式端上,如下所示設定 imq.serviceName.protocolType.port 特性:
imq.ssljms.tls.port=1756
MQ_SERVICE_PORT_PROPERTY 連線特性已向下相容至 Message Queue 3.7 Update 2。
Message Queue 4.0 是僅支援 Application Server 9 PE 的次要發行版本。它包含數項新功能、一些增強功能,以及錯誤修正。本節說明此發行版本的新功能:
4.0 版推出的其中一個變更雖然次要,但可能造成重大改變,亦即停用以指令行指定密碼的選項。因此,您必須如已停用的密碼選項中所述,將所有密碼儲存在檔案中,或在提示時輸入密碼。
Message Queue 4.0 中已增加符合 Java Management Extensions (JMX) 規格,且可用於配置與監視 Message Queue 代理程式的新 API。您可以使用此 API,從 Java 應用程式內以程式設計方式配置並監視代理程式功能。在 Message Queue 的舊版中,您只能從指令行管理公用程式或從 [管理主控台] 存取這些功能。
如需更多資訊,請參閱「Sun GlassFish Message Queue 4.4 Developer’s Guide for JMX Clients」。
Message Queue 4.0 推出對用戶端執行階段記錄連線與階段作業相關事件的支援。
如需有關用戶端執行階段記錄以及如何加以配置的資訊,請參閱「Java Dev Guide」的第 137 頁。
Message Queue 4.0 推出的事件通知 API,可讓用戶端執行階段通知應用程式有關連線狀態的變更。連線事件通知可讓 Message Queue 用戶端偵聽關閉事件與重新連線事件,並根據通知類型與連線狀態採取適當的動作。例如,當發生容錯移轉且用戶端重新連線至其他代理程式時,應用程式最好清除作業事件狀態,並進行新的作業事件。
如需有關連線事件以及如何建立事件偵聽程式的資訊,請參閱「Java Dev Guide」的第 96 頁。
在 Message Queue 4.0 中,指令公用程式 (imqcmd) 已增加新的子指令及數個指令選項,可讓管理員靜止代理程式、在指定間隔之後關閉代理程式、銷毀連線,或設定 Java 系統特性 (例如連線相關特性)。
靜止代理程式會使其進入無訊息狀態,允許在關閉或重新啟動代理程式之前清空訊息。您無法向靜止中的代理程式建立新連線。若要靜止代理程式,請如下輸入指令。
imqcmd quiesce bkr -b Wolfgang:1756
若要在指定間隔後關閉代理程式,請如下輸入指令。(時間間隔會指定代理程式關閉前的等候秒數)。
imqcmd shutdown bkr -b Hastings:1066 -time 90
若指定時間間隔,代理程式就會記錄一則訊息,指示何時將會關閉。例如,
Shutting down the broker in 29 seconds (29996 milliseconds) (在 29 秒後關閉代理程式,29996 毫秒)
當代理程式等候關閉時,其運作方式會有以下影響。
會繼續接受管理 JMS 連線。
不會接受任何新的 JMS 連線。
現有的 JMS 連線會繼續運作。
此代理程式無法接管強化代理程式叢集中的其他代理程式。
imqcmd 公用程式不會封鎖,它會向代理程式傳送關閉請求並立即返回。
若要銷毀連線,請如下輸入指令。
imqcmd destroy cxn -n 2691475382197166336
使用指令 imqcmd list cxn 或 imqcmd query cxn 以取得連線 ID。
若要透過 imqcmd 設定系統特性,請使用新的 –D 選項。這在設定或置換 JMS 連線工廠特性或連線相關的 Java 系統特性時,會很有用。例如︰
imqcmd list svc -secure -DimqSSLIsHostTrusted=true imqcmd list svc -secure -Djavax.net.ssl.trustStore=/tmp/mytruststore -Djavax.net.ssl.trustStorePassword=mytrustword
如需有關 imqcmd 指令的完整語法資訊,請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的第 16 章「Command Line Reference」。
在 Message Queue 4.0 中,資料庫管理者公用程式 imqdbmgr 已新增 query 子指令。此子指令可用以顯示關於 JDBC 資料存放區的資訊,包含資料庫版本、資料庫使用者,以及是否已建立資料庫表格。
以下是該指令所顯示之資訊的範例。
imqdbmgr query |
[04/Oct/2005:15:30:20 PDT] Using plugged-in persistent store: version=400 brokerid=Mozart1756 database connection url=jdbc:oracle:thin:@Xhome:1521:mqdb database user=scott Running in standalone mode. Database tables have already been created. |
在 Message Queue 4.0 中,現在支援 Apache Derby 10.1.1 版作為 JDBC 資料存放區提供者。
Message Queue 4.0 已變更用於最佳化與支援未來增強功能的 JDBC 資料存放區。因此,400 版增加了 JDBC 資料存放區格式。請注意,Message Queue 4.0 中的檔案資料存放區版本仍為 370,因為未對其進行任何變更。
Message Queue 4.0 增加了兩個新特性,可對置於停用訊息佇列中的所有訊息進行設定。
JMS_SUN_DMQ_PRODUCING_BROKER 表示產生訊息的代理程式。
JMS_SUN_DMQ_DEAD_BROKER 表示將訊息標記為停用的代理程式。
自 Message Queue 4.0 起,用戶端連線工廠特性 imqSSLIsHostTrusted 的預設值為 false。若應用程式相依於之前的預設值 true,即需要重新配置並將特性明確設定為 true。
當代理程式配置為使用自我簽署的憑證時,您可以選擇信任主機。此時,除了指定連線應使用基於 SSL 的連線服務 (使用 imqConnectionType 特性),還應該將 imqSSLIsHostTrusted 特性設定為 true。
例如,若要在代理程式使用自我簽署的憑證時安全地執行用戶端應用程式,請使用如下的指令。
java -DimqConnectionType=TLS -DimqSSLIsHostTrusted=true ClientAppName
若要在代理程式使用自我簽署的憑證時安全地使用指令公用程式 (imqcmd),請使用類似如下的指令 (用於列出連接器服務)。
imqcmd list svc -secure -DimqSSLIsHostTrusted=true
未來發行版本將會停用下列功能:
訊息式監視
訊息式監視使用代理程式的可配置「度量訊息產生器」,將度量資料寫入 JMS 訊息,然後再根據訊息中包含的度量資訊類型傳送至度量主題目標。日後若要存取此度量資訊,可撰寫用戶端應用程式以訂閱適當的度量主題目標、使用其訊息,再視需要處理資料。
訊息式監視功能已由 MQ 4.0 推出的 JMX 管理 API 所取代 (請參閱JMX 管理 API 的支援)。JMX API 的涵蓋範圍更廣 (其包含的度量資料比寫入主題目標的度量資料多),且以 JMX 工業標準為依據。
因為 Message Queue 已支援 JMX API,所以沒有理由繼續使用訊息式監視。在正式停用訊息式監視之前,Message Queue 文件會保留有關此功能的資訊。
文字型安裝程式
Message Queue 安裝程式 (installer -t) 的所有作業系統平台版本都會刪除文字模式。文字模式中的終端機視窗會顯示純文字,以模擬圖形化使用者介面 (GUI) 模式的外觀。GUI 模式及無訊息模式仍繼續受到支援。
平台支援
未來的發行版本將不再支援 Windows 2000 及 Red Hat Linux 3。
JMSRA 資源配接卡
Message Queue 未來版本會以新的資源配接卡,取代通常稱為 JMSRA 的 Message Queue 資源配接卡 imqjmsra.rar。JMSRA 用於整合 Message Queue 與 Sun Java System Application Server。
新資源配接卡結合現有 JMSRA 功能與其他 Sun JMS 資源配接卡功能,會在 Java EE 5 應用程式伺服器環境中為 Message Queue 以及其他提供者提供專屬支援。如此一來,其即可用於將 Message Queue 整合到 Sun GlassFish Enterprise Server 及 Sun Java Composite Application Platform Suite (Java CAPS)。
Message Queue 4.4 包含新的錯誤修正,且合併 Message Queue 4.x 系列舊版中已修正的錯誤。
以下各節列出各發行版本中已修正的錯誤:
下表說明 Message Queue 4.4 中已修正的錯誤。
表 1–7 Message Queue 4.4 中已修正的錯誤
錯誤 |
說明 |
---|---|
6242247 |
若兩個同名的代理程式位在同一部機器上,MQ 叢集中的主代理程式會啟動並當機。 |
6760937 |
代理程式若重新啟動,不會重新連線至 DB。 |
6765410 |
主代理程式會傳送 2 次本機 Interest,造成已在使用中之長期訂閱的從屬異常。 |
6796506 |
接收遠端 PREPARE 回覆發生逾時狀況時,遠端 PREPARED 訊息未在回復之後重新傳送。 |
6821639 |
在 MQRA-DIRECT 模式之 AS 回復期間,回復/確定作業事件時發生 NPE |
6836364 |
若萬用字元用戶的主題建立於用戶之前,該用戶就不會接收遠端訊息。 |
6836749 |
HA(JCAPS):在 1 項長期訂閱回復之後才確定訊息,再次接收訊息時即會發生「存放區中已存在確認」的異常狀況。 |
6858905 |
Consumer.destroyConsumer 中的 ConcurrentModificationException |
下表說明 Message Queue 4.3 中已修正的錯誤。
表 1–8 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–9 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–10 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–11 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 資料庫的支援。 |
本節包含有關 Message Queue 4.4 文件更新的資訊:
本節涵蓋有關 Message Queue 4.4 的相容性問題。
Sun GlassFish Message Queue 使用許多介面,而這些介面可能會隨時間而有所變更。「Sun GlassFish Message Queue 4.4 Administration Guide」中的附錄 B「Stability of Message Queue Interfaces」根據介面穩定性予以分類。介面愈穩定,在後續版本中變更的可能性愈小。
下一個 Message Queue 主要發行版本可能會推出變更,而使得目前的 Message Queue 用戶端應用程式與該發行版本不相容。此資訊提供目的是為了完全公開。
Sun GlassFish Message Queue 連帶安裝的個別檔案位置可能會變更。這可能會造成使用目前位置的某些 Message Queue 檔案之應用程式無法執行。
Message Queue 3.5 以及更舊版本的代理程式,可能無法繼續在具有新版代理程式的叢集中運作。
在未來發行版本的 Message Queue 用戶端中,可能無法使用比 JDK 1.5 舊的版本。
在未來發行版本的 Message Queue 用戶端中,可能無法使用比 JDK 1.6 舊的版本。
Message Queue 4.4 文件集包含 Message Queue 4.3 文件集的更新,如下所述:
「Sun GlassFish Message Queue 4.4 Technical Overview」會說明 Message Queue 4.4 的新功能。
「Sun GlassFish Message Queue 4.4 Installation Guide」包含在 AIX 平台上的 Message Queue 安裝說明。
「Sun GlassFish Message Queue 4.4 Administration Guide」內容包含次要錯誤修正、支援 AIX 平台,並修訂代理程式叢集管理程序以及將傳統叢集轉換成強化叢集的程序。
「Sun GlassFish Message Queue 4.4 Developer’s Guide for Java Clients」內容更新版本編號,除此之外無其他修訂。
「Sun GlassFish Message Queue 4.4 Developer’s Guide for C Clients」包含在 AIX 平台上建立 C 用戶端應用程式的資訊。
「Sun GlassFish Message Queue 4.4 Developer’s Guide for JMX Clients」包含 JMX API 的增強功能。
本節包含 Message Queue 4.4 的已知問題清單。涵蓋以下的產品區域:
如需目前錯誤的清單、其錯誤狀態與解決方法,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.4 版相關的問題。
Message Queue 4.4 與 Message Queue 4.2 及 4.1都是透過較新的安裝程式所安裝,此安裝程式也會安裝與升級 Message Queue 所需要的 Java Enterprise System (Java ES) 共用元件,例如 JDK、NSS、JavaHelp 等。
此新版 Message Queue 安裝程式與舊版 Java ES 安裝程式 (用於安裝舊版 Message Queue) 無法共用相同的產品登錄。若用 Message Queue 安裝程式移除當初由 Java ES 安裝程式安裝的某版本 Message Queue,隨後用 Message Queue 安裝程式安裝 Message Queue 4.4,則 Java ES 產品登錄的狀態可能會不一致。因此執行 Java ES 解除安裝程式時,可能會不慎移除 Message Queue 4.4 及所需的共用元件,雖然這些檔案都不是由 Java ES 安裝程式所安裝。
升級由 Java ES 安裝程式所安裝的 Message Queue 軟體時,最佳方式如下所示。
使用 Java ES 解除安裝程式移除 Message Queue 及其共用元件。
使用 Message Queue 安裝程式安裝 Message Queue 4.4。
這些問題會影響所有平台上的安裝作業。
[準備安裝] 畫面以「mq」顯示產品名稱,而不會顯示為 Sun Java System Message Queue 4.3。(錯誤 6650841)
當安裝程式正在安裝 Message Queue 4.3 並顯示 [進度] 畫面時,可使用 [取消] 按鈕。此時選取 [取消] 按鈕會導致安裝不完整或中斷。(錯誤 6595578)
安裝程式的 [摘要] 畫面包含數個連結,按一下即可啟動記錄或摘要頁面檢視器。若使用視窗的關閉按鈕 [X] 而非標示為 [關閉] 的按鈕來關閉此檢視器視窗,將無法再次顯示此檢視器視窗。(錯誤 6587138)
解決方法:使用標記為 [關閉] 的按鈕關閉視窗。
當電腦系統的 Message Queue 與 NSS/NSPR 均為舊版時,安裝程式的 [升級] 畫面僅會列出 Message Queue 需要升級,而不會提及 NSS 與 NSPR 也需要升級。但是,所有相關的軟體均會升級 (依顯示正確資訊的 [準備安裝] 畫面所示)。(錯誤 6580696)
即使未選取 [選擇 JDK] 選項,[JDK 選取] 畫面上的 JDK 清單也會在使用中。(錯誤 6650874)
使用 Message Queue 解除安裝程式時,按一下 [取消] (不是按 [移除]) 仍會移除某些安裝程式檔案,日後的解除安裝作業也會失敗。(錯誤 6760416)
在執行跳過註冊程序的無訊息安裝作業之後,在僅限註冊模式中 (installer -r) 執行安裝程式時,會造成註冊失敗並顯示「檔案提前結束」錯誤。(錯誤 6767988)
在之前安裝過 Open Message Queue 的電腦上執行 Message Queue 4.3 安裝程式時,可能會看到下列警告訊息:「從 Config-State 讀取上一階段作業的資料時,發生錯誤。」(錯誤 6764305)
解決方法:訊息是良性的,完成安裝後即不會再出現。您也可以移除 /var/install/config/mq/InstallDirectory.xcu 檔案以避免出現此訊息。
在未安裝 JDK 的電腦上執行 Message Queue zip 安裝程式時,會出現下列錯誤訊息:「登錄機碼 HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion 中有無效的根。」(錯誤 6764358)
解決方法:先安裝 JDK 再執行安裝程式。
早在您按下 [準備安裝] 畫面的 [安裝] 按鈕之前,Message Queue 安裝程式即已建立 mqInstallHome 目錄。 (錯誤 6595590)
尚未安裝 Message Queue 就嘗試以文字模式註冊 Message Queue 時 (installer -t -r),會丟出 NullPtr 異常。(錯誤 6760991)
解決方法:先安裝 Message Queue,再嘗試註冊安裝作業。
在 Windows 上安裝 Message Queue 時,請注意下列限制。
Windows 平台的 Message Queue 4.3 已安裝目錄結構與舊版不同。請參閱「Sun GlassFish Message Queue 4.4 Installation Guide」中的「Installed Directory Structure」。
安裝程式並未將 Message Queue 的項目增加至 [開始] > [程式集] 功能表。(錯誤 6567258)
解決方法:若要啟動 [管理主控台],請使用「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Starting the Administration Console」所示之指令行。
安裝程式未將 IMQ_HOME\mq\bin 目錄增加到 PATH 環境變數。(錯誤 6567197)
解決方法:當使用者呼叫 Message Queue 公用程式 (IMQ_HOME\mq\bin\ 指令) 時,需要將此項目增加至其 PATH 環境變數,或提供完整的路徑名稱。
安裝程式未將項目增加至 Windows 登錄以表示已安裝 Message Queue。(錯誤 6586389)
安裝程式不會將 Message Queue 代理程式增加為 Windows 服務。
解決方法:使用 imqsvcadm 指令,以手動方式將 Message Queue 代理程式增加為 Windows 服務。
若未安裝任何 JDK,安裝程式即會丟出下列錯誤:「登錄機碼 HKLM\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\CurrentVersion 中有無效的根。」(錯誤 6764358)
解決方法:若發生此錯誤,請安裝 JDK 並繼續作業。
使用回覆檔以無訊息模式執行時,安裝程式會立即返回。安裝會確實執行,但使用者無法知道無訊息安裝究竟於何時完成。(錯誤 6586560)
嘗試在 Windows 上以文字模式執行安裝程式 (installer –t),會導致即使以非英文環境執行安裝程式也以英文顯示錯誤訊息。Windows 上不支援文字模式。(錯誤 6594142)
即使作業系統安裝在其他磁碟機,安裝程式仍會將 Message Queue 安裝在 C:\。(錯誤 6673511)
Windows 上沒有使用者可執行的安裝及解除安裝 .bat 檔案,使用者也無法使用 Windows [控制台] 的 [新增/移除程式] 解除安裝。(錯誤 6673417)
在 Windows Vista 中,除非以管理員身分從 [命令提示字元] 安裝,否則 Message Queue 無法安裝在 C:\Program Files 下。(錯誤 6701661)
解決方法:若要以管理員身分從指令提示符號進行安裝,請執行以下步驟:
1. 選取 [開始]->[所有程式]->[附屬應用程式]->[命令提示字元]。
2. 在 [命令提示字元] 上按一下滑鼠右鍵。
3. 選取 [以系統管理員身分執行]。
4. 將目錄變更為 Message Queue 4.2 安裝影像的目錄。
5. 執行 installer.vbs。
當以模擬測試模式執行解除安裝程式 (uninstaller -n) 時,將無法正確執行解除安裝。(錯誤 6719051)
解決方法:使用下列指令執行無訊息安裝:
uninstaller -s
安裝程式首頁的「Install Home」字串未本土化。(錯誤 6592491)
Message Queue 的 Zip 解除安裝程式在 Windows 2003 中會當機。(錯誤 6764370)
解決方法:手動移除 mqInstallHome 目錄。
以模擬測試模式 (installer –n) 執行安裝程式時,[摘要] 畫面會出現一些錯誤訊息,同時顯示安裝狀態為「不完整」。此為錯誤且有誤導之嫌;模擬測試不會在系統上進行任何安裝,只會建立後續可用於執行無訊息安裝的回覆檔。(錯誤 6594351)
使用回覆檔以無訊息模式執行安裝程式 (installer -a filename -s) 時,不會執行 Sun Connection 註冊。(錯誤 6710268)
以文字模式執行安裝程式時,若輸入 Sun Connect 註冊的使用者名稱或密碼,或建立線上帳號,則無法使用退格鍵更正使用者名稱或密碼。(錯誤 6673460)
解決方法:使用 Control-H 鍵而不是退格鍵,或使用不同的終端機模擬器,如 dtterm 或 xterm。
安裝程式的 [升級] 畫面有時不會正確報告目前安裝的 Message Queue 版本,或安裝程式引擎的版本。(錯誤 6679765)
以文字模式使用安裝程式,並嘗試以無效的使用者名稱與密碼向 Sun Connection 註冊時,安裝程式會顯示 [無法註冊] 對話方塊、丟出空指標異常並結束。(錯誤 6666365)
下列問題會影響 Linux 平台上的安裝作業:
在 Redhat Linux 5 中,執行 C 用戶端應用程式所需的 compat-libstdc++ 程式庫,未包含在 Message Queue 發行軟體中;因此,Message Queue 安裝程式不會安裝此程式庫。若要開發並執行 C 用戶端,則必須手動安裝此程式庫。
compat-libstdc++ rpm 通常位於您使用之 Linux 版本的安裝媒體中。此項目可使用下列指令安裝:
rpm -ivh compat-libstdc++-x-x.x.x.x..rpm
此處的 x 代表版本編號。
若要檢查是否已成功安裝程式庫,請使用下列指令:
rpm -qa | grep compat-libstdc++
[JDK 選擇] 面板上的捲動清單僅會顯示一個項目。因此很難在清單中選取其他 JDK。(錯誤 6584735)
若 JDK 是最新的版本且使用者在 [JDK 選擇] 畫面上選取 [安裝預設 JDK],則安裝程式仍會嘗試安裝,並報告無法安裝套裝軟體。但即使發生此問題,安裝仍會成功完成。(錯誤 6581310)
若目前安裝的 JDK 是 JDK 1.5.0_15 (Message Queue 安裝程式一般安裝的版本) 之後的版本,則 Message Queue 解除安裝程式會找不到預設 IMQ_JAVAHOME 目錄並傳回錯誤。(錯誤 6673415)
解決方法:先如下所述手動安裝 JDK 1.5,再執行 Message Queue 解除安裝程式。
# cd installImage/Product/UNIX/LINUX/X86/2.4/Packages
# rpm -i --force jdk-1.5.0_15–linux- arch.rpm
其中 arch 是 i586 或 amd64。
以模擬測試模式 (installer –n) 執行安裝程式時,[摘要] 畫面會出現一些錯誤訊息,同時顯示安裝狀態為「不完整」。此為錯誤且有誤導之嫌;模擬測試不會在系統上進行任何安裝,只會建立後續可用於執行無訊息安裝的回覆檔。(錯誤 6594351)
在 64 位元的 Linux 上,無法以文字模式執行 Message Queue 安裝程式。(錯誤 6771303)
解決方法:若嘗試從終端機視窗執行遠端安裝,即必須使用某些遠端顯示軟體,才能改以 GUI 模式執行安裝程式。
安裝程式會以不易理解的格式顯示 Message Queue 的版本資訊。(錯誤 6586507)
在 Solaris 平台上,請參閱下表以判斷安裝程式所顯示的 Message Queue 版本。
表 1–12 版本字串翻譯
安裝程式在 Solaris 作業系統上顯示的版本 |
對應 Message Queue 版本 |
---|---|
4.3.0.0 |
4.3 |
4.2.0.0 |
4.2 |
4.1.0.2 |
4.1 修補程式 2 |
4.1.0.1 |
4.1 修補程式 1 |
4.1.0.0 |
4.1 |
3.7.2.1 |
3.7 UR2 修補程式 1 |
3.7.0.2 |
3.7 UR2 |
3.7.0.1 |
3.7 UR1 |
3.6.0.0 |
3.6 |
3.6.0.4 |
3.6 SP4 |
3.6.0.3 |
3.6 SP3 |
3.6.0.2 |
3.6 SP2 |
3.6.0.1 |
3.6 SP1 |
針對 3.6 SP4 的修補程式版本 (例如 3.6 SP4 Patch 1),安裝程式顯示的發行版本字串會維持不變。您需要執行指令 imqbrokerd -version 以判斷實際版本。
在 Linux 平台上,安裝程式顯示的版本編號會使用下列格式。
majorReleaseNumber.minorReleaseNumber-someNumber
例如,3.7–22。這僅表示其為 3.7 發行版本的其中之一,但未指定是哪一個特定版本。若要判斷已安裝的 Message Queue 版本,請執行下列指令:
imqbrokerd -version。
下列問題與本土化問題相關。
在非英文語言環境中以文字模式執行安裝程式 (installer –t) 時,多位元組字元會顯示為亂碼。(錯誤 6586923)
安裝程式 [進度] 畫面上的進度列顯示亂碼。工具提示在非英文的語言環境中為程式內定。(錯誤 6591632)
Windows 不支援文字模式 (installer –t)。在 Windows 上以文字模式執行安裝程式會出現錯誤訊息。即使安裝程式在非英文的語言環境中執行,此訊息還是不會本土化。(錯誤 6594142)
不論安裝程式執行的語言環境為何,安裝程式的 [授權] 畫面皆會顯示英文授權文字。(錯誤 6592399)
解決方法:若要存取本土化的授權檔案,請參閱 LICENSE_MULTILANGUAGE.pdf 檔案。
安裝程式用法說明文字並未本土化。(錯誤 6592493)
安裝程式摘要 HTML 頁面上顯示的字串「None」已程式內定為英文。(錯誤 6593089)
當安裝程式在德文語言環境中執行時,[歡迎] 畫面無法顯示其他語言環境中所示的完整文字。(錯誤 6592666)
安裝程式的 [安裝主目錄] 畫面上所示的字串「Install Home」並未本土化。即使安裝程式在非英文的語言環境中執行,還是會顯示為英文。(錯誤 6592491)
以文字模式執行安裝程式 (installer –t) 時,不論安裝程式執行的語言環境為何,皆會使用英文回應選項「Yes」和「No」。(錯誤 6593230)
安裝程式的 [JDK 選擇] 畫面上的瀏覽按鈕工具提示已程式內定為英文。(錯誤 6593085)
在舊版的 Message Queue 中,可以使用 -p 或 -password 選項,以互動方式為下列指令指定密碼:imqcmd、imqbrokerd 及 imdbmgr。自 4.0 版起,這些選項已停用。
但是,您可以建立指定相關密碼的密碼檔案,並使用 -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=trueimq.passfile.dirpath= passwordFileDirectory imq.passfile.name=passwordFileName
使用相關指令的 -passfile 選項,例如:
imqbrokerd -passfile passwordFileName
下列問題與 Message Queue 的管理及配置相關。
在 Windows 平台中,需要使用 imqsvcadm 指令,以手動方式將 Message Queue 代理程式增加為 Windows 服務。安裝程式不會為您執行此項作業。
在 Windows 平台上,預設啟用的內建 Windows 防火牆必須使用防火牆規則手動配置為允許代理程式接受用戶端的內送連線。(錯誤 6675595)
連按兩下 [控制台] 中的 [Windows 防火牆]
您必須在 [使用者帳號控制] 對話方塊中按一下 [繼續],[Windows 防火牆設定] 對話方塊方可開啟。
在 [Windows 防火牆設定] 對話方塊中,按一下 [例外] 標籤。
按一下 [新增程式]。
在 [新增程式] 對話方塊中,選取 java.exe,然後按一下 [瀏覽]。
Windows 視代理程式程序為 Java Platform SE 的二進位檔案。因此,會找到代理程式使用的 java.exe (通常位於 jdk1.5.0_15\jre\bin\java.exe)。
按一下 [變更領域]。
在 [變更領域] 對話方塊中,選取 [任何電腦 (包括網際網路上的電腦)]。
按一下 [確定]。
在 [新增程式] 對話方塊中,按一下 [確定]。
在 [Windows 防火牆設定] 對話方塊中,按一下 [確定]。
在 Windows 平台上,當 CLASSPATH 包含雙引號時,imqadmin 與 imqobjmgr 指令會丟出錯誤。(錯誤 5060769)
解決方法:開啟指令提示字元視窗,並取消設定 CLASSPATH:
set classpath=
然後在相同的指令提示符號視窗中執行所需的指令,例如:
mqInstallHome\mq\bin\imqadmin
若提供的值包含空格,則所有 Solaris 與 Windows 程序檔中的 -javahome 選項均無法使用。(錯誤 4683029)
Message Queue 指令與公用程式使用 javahome 選項,以指定使用哪個替代的 Java 2 相容執行階段。但是,替代 Java 執行階段的路徑名稱不得包含空格。以下是路徑包含空格的範例。
Windows:C:\jdk 1.4
Solaris:/work/java 1.4
解決方法:將 Java 執行階段安裝在不包含空格的位置或路徑中。
imqQueueBrowserMaxMessagesPerRetrieve 屬性指定瀏覽佇列內容時,用戶端執行階段一次可擷取的最大訊息數。此屬性會影響要傳送至用戶端執行階段之佇列訊息的批次執行方式,但不會影響瀏覽的訊息總數。此屬性僅會影響瀏覽機制,而不會影響佇列訊息的傳送。(錯誤 6387631)
下列問題會影響 Message Queue 代理程式。
當永久資料存放區開啟過多目標時,會無法存取代理程式。(錯誤 4953354)
解決方法:這種情況是由於代理程式達到系統開啟檔案描述元限制所引起的。在 Solaris 和 Linux 上使用 ulimit 指令來增加檔案描述元的限制。
目標若已銷毀,會孤立用戶。(錯誤 5060787)
目標若已銷毀,會孤立使用中的用戶。一旦使用者被孤立,則無法再接收訊息 (即使目標重新建立)。
當使用 HTTP 連線服務的 JMS 用戶端突然終止 (例如,使用 Ctrl-C) 時,代理程式將需要大約一分鐘來釋放用戶端連線以及所有相關的資源。
如果一分鐘內有其他用戶端實例啟動,且其嘗試使用相同的 ClientID、長期訂閱或佇列,則可能會收到「用戶端 ID 已在使用」異常。這不是實際發生的問題,它只是上述終止程序的副作用。如果用戶端在延遲大約一分鐘後啟動,則所有作業均可正常執行。
MySQL 資料庫用為資料存放區時,儲存的訊息只要超過 1 MB 即會丟出 SQL 異常「Packet for query is too large...」(查詢的封包太大...)。(錯誤 6682815)
解決方法:啟動 MySQL 伺服器,並將 --max_allowed_packet 選項設為大於預設值 1 MB 的值。例如,使用下列值:
--max_allowed_packet=60M
若使用 MySQL 資料庫作為高度可用的共用資料存放區,則需要可將 MySQL 儲存引擎配置為 NDBCLUSTER 的一套機制。(錯誤 6691394)
解決方法:將下列特性值增加到代理程式的 config.properties 檔案中 (請參閱「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Enhanced Clusters: JDBC Configuration Properties 」)。
imq.persist.jdbc.mysql.tableoption=EMGINE=NDBCLUSTER
使用 Oracle 9i (JDBC 9.2.0.x) 驅動程式時,代理程式會丟出「Failed to persist property...」(無法保留特性...) 異常。(錯誤 6626825)
解決方法:使用 Oracle 10g (JDBC 10.2.0.x) 驅動程式,代理程式已針對此進行最佳化處理。
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
若使用 Java DB 資料庫作為資料存放區,則會在儲存訊息時丟出「lock could not be obtained within the time requested (在請求的時間內無法取得鎖定)」之 SQL 異常。(錯誤 6691394)
解決方法:將下列特性值增加到代理程式的 config.properties 檔案中:
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
下列問題影響代理程式叢集。
此版本僅支援完全連線的代理程式叢集。這意味著,叢集中的每個代理程式必須與叢集中的每個其他代理程式直接通訊。若要使用 imqbrokerd -cluster 指令行引數將代理程式連線至傳統叢集,請務必小心以確保會包含叢集中的所有代理程式。
若用戶端連線至強化之代理程式叢集中的代理程式,用戶端執行階段會嘗試重新連線,直到成功為止 (將忽略連線工廠屬性 imqAddressListIterations 的值)。
用戶端僅可瀏覽位於本機代理程式之佇列的內容。用戶端仍可傳送訊息到任何佇列,或是使用來自叢集中任何佇列的訊息;此限制僅會影響瀏覽。
在包含 4.3 版代理程式的傳統叢集中,所有代理程式均須為 3.5 版或更新版本。
Message Queue 4.3、4.2 及 4.1 代理程式預設無法在叢集中與 Message Queue 3.7 或 3.6 代理程式互通,因為 imq.autocreate.queue.maxNumActiveConsumers 的預設值在這些版本中各不相同。(錯誤 6716400)
解決方法:請確定所有代理程式都具有相同的 imq.autocreate.queue.maxNumActiveConsumers 異動值,通常將 Message Queue 4.3、4.2 及 4.1 的配置變更成符合 3.7 或 3.6 代理程式所用者即可 (預設是從值 -1 變成舊版的預設值 1)。
若要將 Message Queue 4.3 (或 4.x) 代理程式增加至 Message Queue 3.x 代理程式叢集,主代理程式必須在執行中。(錯誤 6763796)
從傳統叢集轉換成強化的叢集時,可使用 Message Queue 資料庫管理者公用程式 (imqdbmgr),將現有的獨立式 JDBC 資料存放區轉換成共用的 JDBC 資料存放區,如「Sun GlassFish Message Queue 4.4 Administration Guide」中的「Cluster Conversion: JDBC-Based Data Store」所述。
使用 HADB 的代理程式無法處理大於 10 MB 的訊息。(錯誤 6531734)
若存放區存留的訊息超出 10,000 則,則使用指令 imqdbmgr upgrade hastore 轉換成 HADB 存放區可能會失敗,並顯示訊息「設定太多鎖定」。(錯誤 6588856)
解決方法:使用下列指令增加鎖定數。
hadbm set NumberOfLocks=<desiredNumber>
如需其他資訊,請參閱「Sun Java System Application Server 9.1 Enterprise Edition Troubleshooting Guide」中的「HADB Problems」。
若某項作業事件確定了 500 則以上的遠端訊息,則代理程式可能會傳回錯誤訊息「HADB-E-12815: Table memory space exhausted」(HADB-E-12815:表格記憶體空間已經用盡)。(錯誤 6550483)
如需其他資訊,請參閱「Sun Java System Application Server 9.1 Enterprise Edition Troubleshooting Guide」中的「HADB Problems」。
在代理程式叢集中,代理程式會將訊息排入尚未開啟之遠端連線的佇列中。(錯誤 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 方法,會傳回作業事件建立時間不正確的作業事件資訊。(錯誤 6393359)
解決方法:請改用作業事件管理程式監視 MBean 的 getTransactionInfoByID 方法。
您必須瞭解與 SOAP 支援相關的兩個問題。
自 Message Queue 4.0 版發行以來,已停止對 SOAP 受管理物件的支援。
SOAP 開發取決於數個檔案:SUNWjaf、SUNWjmail、SUNWxsrt 及 SUNWjaxp。在 Message Queue 4.1 版中,只有使用 JDK 1.6.0 版或更新版本執行 Message Queue 時,才可使用這些檔案。
在先前版本中,SAAJ 1.2 實作 .jar 會直接參照 mail.jar。在 SAAJ 1.3 中已移除此參照;因此,Message Queue 用戶端必須將 mail.jar 明確置於 CLASSPATH 中。
Sun GlassFish Message Queue 4.4 包含的下列檔案集,可讓您以二進位格式使用和隨意分發:
fscontext.jar |
jaas.jar |
imq.jar |
jms.jar |
imqjmx.jar |
libmqcrt.so (HPUX) |
imqxm.jar |
libmqcrt.so (UNIX) |
imqums.war |
mqcrt1.dll (Windows) |
此外,您還可以重新分發 LICENSE 和 COPYRIGHT 檔案。
欲獲得此媒體發佈以來已發行的無障礙功能,請向 Sun 索取依據美國「Section 508」法規進行產品評估所得之結果文件,以便決定最適合佈署無障礙功能解決方案的版本。應用程式的更新版本可於 http://sun.com/software/javaenterprisesystem/get.html。
如需有關 Sun 在無障礙功能方面的成果資訊,請瀏覽 http://sun.com/access。
如果您有 Sun GlassFish Message Queue 方面的問題,請使用以下機制與 Sun 客戶支援連絡︰
Sun 線上軟體支援服務:http://www.sun.com/service/sunone/software。
該網站可連結至知識庫、線上支援中心、ProductTracker 以及維護程式和支援連絡號碼。
維護合約上提供的電話派遣維修號碼。
如此我們將可為您提供最完善的解決問題方法,請在與支援連絡時提供以下資訊:
問題描述,包括問題發生時的情形以及對您作業的影響。
電腦類型、作業系統版本和產品版本,包括所有修補程式和其他可能導致問題的軟體。
用來再現問題的詳細步驟。
所有錯誤記錄或記憶體傾印。
Sun GlassFish Message Queue 的論壇位於:
http://swforum.sun.com/jive/forum.jspa?forumID=24
我們非常歡迎您的加入討論。
Java 技術論壇中有一個或許您會感興趣的 JMS 論壇。
Sun 致力於提高文件品質,因此誠心歡迎您提出意見與建議。
若要分享您的意見,請移至 http://docs.sun.com,並按一下 [Send Comments (傳送您的意見)]。在線上表單中,請提供文件標題和文件號碼。文件號碼是一個七位或九位的數字,可以在書的標題頁面或文件的頂部找到。例如,本書標題為「版本說明」,文件號碼為 821-0895。
您可在下列網際網路位置找到有用的 Sun GlassFish 資訊:
說明文件
專業服務
軟體產品和服務
軟體支援服務
支援和知識庫
Sun 支援和培訓服務
諮詢和專業服務
開發者資訊
Sun 開發者支援服務
軟體培訓