Sun ONE Message Queue 3.0.1 SP2 版次注意事項

Sun™ ONE Message Queue 版次注意事項

版本 3.0.1 SP2

文件編號 817-3830-10

2003 年 8 月

這些版次注意事項包含了 Sun™ Open Net Environment (Sun ONE) Message Queue (MQ) 版本 3.0.1 Service Pack 2 (SP2) 發行時提供的重要資訊。新功能和增強功能、已知的限制和問題、技術說明及其他資訊均在此處說明。請先閱讀本文件,再開始使用 MQ 3.0.1 SP2。

這些版次注意事項的最新版本位於 Sun ONE 說明文件網站:http://docs.sun.com/?p=/coll/S1_MessageQueue_301 上。請在安裝和設定軟體之前先查看此網站,並在以後定期檢視最新的版次注意事項和手冊。

這些版次注意事項包含以下小節︰


修訂歷程

表 1 修訂歷程 

日期

變更說明

2003 年 8 月

對本文件所作的變更如下:

2002 年 10 月

首次發行本文件。


Java™ Message Service (JMS) 相容

MQ 3.0.1 版本經驗證與 Java Message Service (JMS) 1.1 規格相容:它已通過 JMS 1.1 Compatibility Test Suite (CTS)。

MQ 3.0.1 (Sun ONE Application Server 7 的原生 JMS 提供者) 還通過了 Sun ONE Application Server 7 的 J2EE 1.3.1 CTS 測試 (該測試要求與 JMS 1.0.2b 相容)。


Message Queue 3.0.1 SP2 的新功能

MQ 3.0.1 SP2 是 MQ 3.0.1 SP1 (錯誤修復版次,無新功能) 的更新版本。MQ 3.0.1 SP1 是 MQ 3.0.1 的更新版本。在這些版次注意事項中,3.0.1 版本的參考一般分別指 3.0.1、3.0.1 SP1 和 3.0.1 SP2。

MQ 3.0.1 SP2 產品包含 MQ 3.0 和 3.0.1 的所有新功能,以及另外兩個 3.0.1 SP2 功能。

Message Queue 3.0.1 SP2 的新功能

與 MQ 3.0.1 相比,MQ 3.0.1 SP2 包含兩個新功能:

Message Queue 3.0.1 的新功能

與 MQ 3.0 相比,MQ 3.0.1 包含兩個新功能:

Message Queue 3.0 的新功能

MQ 3.0 包含對 2.0 版產品 — iMQ 2.0 (與 iMQ 2.0, Service Pack 1) 的一些變更。

這些變更中最重要的是產品目前提供兩個版本:平台版和企業版。

平台版     提供基本的 JMS 支援,最適用於小規模的佈署和開發環境。

企業版     提供 HTTP/HTTPS 支援、增強的延展性以及安全性功能,最適用於大規模的佈署。

(請參閱「MQ 管理員指南」或「MQ 開發人員指南」的介紹,以獲得有關這些版本的更多資訊。)

MQ 3.0 產品的以下變更說明根據它們是適用於這兩個版本還是僅適用於企業版來進行群組。

適用於企業版和平台版

僅適用於企業版


Message Queue 說明文件更新

以下 MQ 3.0.1 和 MQ 3.0.1 SP2 文件已從產品的 3.0 版本更新。這些已更新的文件位於 Sun ONE 說明文件網站:http://docs.sun.com/coll/S1_MessageQueue_301 上。

安裝指南

「MQ 安裝指南」已更新,其中包含 MQ 3.0.1 SP2 中的變更 (請參閱 Message Queue 3.0.1 SP2 的新功能)。

管理員指南

「MQ 管理員指南」已更新,其中包含 MQ 3.0.1 中的新功能 (請參閱 Message Queue 3.0.1 的新功能)。

開發人員指南

「MQ 開發人員指南」已更新,其中包含 MQ 3.0.1 中的新功能 (請參閱 Message Queue 3.0.1 的新功能)。


相容性問題

MQ 3.0.1 版本與 MQ 3.0 完全相容,並且從 MQ 3.0 升級至 MQ 3.0.1 無需變更代理程式配置、受管理物件、管理工具或用戶端應用程式。

但是,MQ 3.0.1 版本 (本節中,以下僅稱為 3.0.1) 通常與 iMQ 2.0 相容。特別是從 iMQ 2.0 (或 iMQ 2.0 Service Pack 1) 升級至 MQ 3.0.1 時,您可能需要處理一些問題:

代理程式相容性

由於代理程式特性和永久性儲存區綱目的變更,MQ 3.0.1 代理程式將無法與 iMQ 2.0 代理程式互通。但是,某些 iMQ 2.0 資料與 MQ 3.0.1 相容 (如表 2 中所示),並且在升級至 MQ 3.0.1 時可被保留。從 iMQ 2.0 升級至 MQ 3.0.1 時,您應考量以下內容:

受管理物件相容性

MQ 3.0.1 受管理物件已使用新屬性增強,並且 iMQ 2.0 屬性已重新命名。因此,從 iMQ 2.0 升級至 MQ 3.0.1 時,您應考量以下內容:

管理工具相容性

由於重新命名了許多檔案和目錄 (特別是以字串「imq」取代「jmq」),所有的 MQ 3.0.1 指令行公用程式、代理程式特性、受管理物件屬性以及內部檔案名稱均已變更。因此,從 iMQ 2.0 升級至 MQ 3.0.1 時,您應考量以下事項:

用戶端相容性

從 iMQ 2.0 升級至 MQ 3.0.1 時,您應考量以下內容:


已知的限制

此小節中所示的限制根據它們是適用於 MQ 3.0.1 版本的企業版及平台版,還是僅適用於企業版來進行群組。

適用於企業版和平台版

僅適用於企業版


已知的錯誤

本節包含 MQ 3.0.1 SP2 發行時已知的較為重要的錯誤之清單。

若要取得目前錯誤、錯誤狀況以及解決方法的清單,Java Developer Connection™ 成員應參閱 Java Developer Connection 網站上的 [Bug Parade] 頁面。報告新錯誤之前,請查閱此頁面。儘管此處未列出所有的 MQ 錯誤,但是如果您想瞭解某問題是否已報告,它將是一個很好的起點。

相關的頁面為:

若要報告新錯誤或提交功能請求,請將郵件傳送至 imq-feedback@sun.com

表 3 錯誤說明 

錯誤編號

詳細資訊

4431924

imqadmin:模態對話方塊可陷入死結狀況。

管理主控台 (imqadmin) 使用應用程式模態對話方塊。這些對話方塊大多可透過與圖形使用者介面互動 (例如,透過選取 [新增代理程式] 功能表項目) 明確帶出。但是,如果失去與代理程式的連線,也會出現一個對話方塊。當開啟多個對話方塊時,管理主控台會鎖定。您將無法使用 [關閉] 按鈕來關閉任一模態對話方塊。

解決方法:使用視窗管理者控制項關閉最後開啟的對話方塊,這些控制項即為

       - Windows 右上角的「X」按鈕

       - Solaris 上的「關閉」視窗管理者功能表項目

4449354

在極少數情況下,當呼叫方法 Connection.stopConnection.startConnection.close 時,同時呼叫方法 Session.recoverSession.rollback (在單獨的執行緒中) 可能會導致非預期的訊息重新發送次序。

解決方法:確保已使用相同的執行緒或使用同步,將以上指定的 Connection... 方法和 Session... 方法的呼叫串列化。

4683029

如果值包含空格,則所有 solaris/win 程序檔中的 -javahome 選項均無法使用。

-javahome 選項由 MQ 指令和公用程式使用,以指定要使用的替代 Java 2 相容運行時間。但是,替代 Java 運行時間的路徑必須是不包含空格的路徑。

包含空格的路徑範例如下:

      Windows:

      C:\jdk 1.4 (在 Windows 上,如果將整個路徑置於引號內,則可以包含空格;例如 "C:\jdk 1.4")

      Solaris:

      /work/java 1.4

解決方法:將 Java 運行時間安裝在不包含空格的位置或路徑中。

4689962

在日文語言環境中,各種管理公用程式的輸出無法在欄中正確對齊,並且邊線太短。

解決方法:無。

4703406

QueueBrowser 應在無需先呼叫 Connection.start() 的情況下執行。

必須先在連線上呼叫 Connection.start(),然後 QueueBrowser 才能瀏覽佇列。如果您無法呼叫 Connection.start(),則 QueueBrowser 列舉將在 nextElement() 上暫停,並最終拋出 java.util. NoSuchElementException。

解決方法:在呼叫 QueueBrowser.getEnumeration() 之前呼叫 Connection.start()。

4753010

使用伺服器 VM 的 Java 程序原生堆疊區段的無界限增長。

這是一個 Java VM 錯誤,可能會在快速開啟和關閉用戶端連線的情況下影響代理程式程序。它可導致代理程式程序記憶體的連續和無界限增長。當所有的系統記憶體用完時,代理程式將最終當機。

您可以使用 /usr/proc/bin/pmap 工具檢驗原生堆疊區段的增長。

解決方法:使用以下指令選項,強制代理程式使用用戶端 VM:

    imqbrokerd -clientvm

或者您可以將 -server 引數移至啟動代理程式的 /usr/bin/imqbrokerd shell 程序檔,或者您可以升級至 JDK 1.4.1 並使用以下指令選項︰

    imqbrokerd -javahome JDK_1.4.1_directory

4761626

使用自動建立佇列的大量使用者建立/銷毀可導致訊息遺失。

訊息可能會從自動建立的佇列目標中遺失,但這種情況極少出現。

從佇列發送的所有訊息均被回應之後,如果佇列的最新訊息使用者在新訊息生產者 (在不同的連線上) 將訊息傳送至此佇列時被移除,則將發生錯誤。這將導致新訊息剛剛到達時,佇列即被「自動移除」(佇列為空,無任何使用者),從而使新訊息遺失。

解決方法:使用 MQ 管理工具以管理員方式建立佇列。

4879448

當堆疊達到紅色記憶體狀態時,Sun ONE Message Queue 3.0.1 版無法將永久性訊息交換至磁碟。

布林表示式決定訊息是否具有不正確的邏輯。如果邏輯不正確,則應將訊息交換出去。這意味著,在某些情況下,永久性訊息將被交換出記憶體。如果關閉交換非永久性訊息的功能,它將始終正確評估永久性訊息。

解決方法:在任一 config.properties 檔案中或透過指令行:
imqmemory_management.swapNPMsps=false 來設定以下代理程式特性

4883126

自動重新連線功能不能正常執行。

每次自動重新連線後,使用者的數目會增加,這將導致代理程式傳送重複訊息。

解決方法:無。此錯誤將在 MQ 3.5 中修正。

4888270

重新傳送原先已在異動中傳送的訊息會導致代理程式錯誤。

如果隨後收到原先已在異動中傳送的訊息,並且在非異動階段作業中重新傳送相同的訊息物件,則代理程式將報告錯誤。

解決方法:請勿使用相同的訊息物件。當您確實需要重新傳送訊息時,應傳送單獨的新訊息。

4893546

代理程式在使用 jdk1.4.2 和伺服器 VM 執行時不釋放記憶體。

解決方法:使用用戶端 VM。應使用以下指令啟動代理程式:

imqbrokerd -clientvm


已在 Message Queue 3.0.1 版中修正的錯誤

以下是在 MQ 3.0.1、3.0.1 SP1 和 3.0.1 SP2 中已修正的最重要錯誤的簡短說明。

若要取得在 MQ 3.0 中已修正的錯誤,請參閱 MQ 3.0 版次注意事項,該版次注意事項位於

如需有關以下任何錯誤修正的更多詳細資訊,您可以在 Java Developer Connection 網站檢視完整報告:

表 4 已在 MQ 3.0.1 版本中修正的錯誤 

錯誤編號

說明

4679837

當使用 TLS 傳輸時,用戶端有時會在 connection.close() 上拋出 JMSException

4683129

代理程式日誌時間標記在子夜至上午 1:00 之間不正確。

4688051

當快速建立和關閉與代理程式的連線時,用戶端會收到 EOFException

4694971

即使在正常、無錯誤的 XAConnection.close() 之後,獨立式 JTS/XA 異動有時也可能會無法完成。

4700851

用戶端無法在結束 XA 異動之後清除本機異動。

4701982

如果設定類別路徑環境變數,則無法在 Solaris 或 Linux 上啟動管理主控台。

4702152

對於作為使用者端異動之一部分的回應訊息,代理程式會為每則回應的訊息保留一些不必要的狀態資訊,直至使用者被關閉。

4704186

校正範例應用程式 README 檔案 (demo/jms/README)。

4735757

如果在呼叫 commit() 之前的異動中收到 50 則以上的訊息,使用者將拋出異常。

4758424

儲存 > 10k 的訊息時,循環佇列上的效能會降低。

4758427

如果最新佇列的訊息在發送之前過期,循環佇列使用者可能會被「困住」。

4770212

如果連線沒有擱置訊息,則暫停後再恢復服務會導致用戶端連線斷開。

4770518

Windows 代理程式服務在登出時終止。

4809079

如果存在基於 SSL 的連線,則代理程式無法正常關機。

4821708

Session.createProducer(null) 拋出 NullPointerException。

4828860

MQ 效能隨著選擇器而降低 - 隨著用戶端數目的增加而降低。

4835586

主代理程式備份 - 復原循環會導致目標資訊遺失。

4879448

在某些情況下,代理程式不會將訊息交換至磁碟。


JMS 中標記為選擇性的功能

JMS 規格會指出某些選擇性項目 -- 每個 JMS 提供者 (供應商) 會選擇是否實施它們。MQ 產品對每個選擇性項目的處理如下所示:

表 5 選擇性 JMS 功能 

JMS 規格中的小節

說明和 MQ 處理

3.4.3
JMSMessageID

「由於訊息 ID 建立和增加訊息的容量較為複雜,如果某些 JMS 提供者收到應用程式未使用訊息 ID 的提示,則可能會最佳化訊息耗用時間。JMS 訊息生產者會提供提示,以停用訊息 ID。」

MQ 實施:產品不停用訊息 ID 的產生 (MessageProducer 中的所有 setDisableMessageID() 呼叫均被忽略)。所有訊息均將包含有效的訊息 ID 值。

3.4.12
置換訊息標頭欄位

「JMS 未明確定義管理員如何置換這些標頭欄位值。JMS 提供者不需要支援此管理選項。」

MQ 實施:MQ 產品支援透過配置連線 factory 受管理物件來管理置換訊息標頭欄位中的值。

3.5.9
JMS 定義的特性

「JMS 可為 JMS 定義的特性保留『JMSX』特性名稱字首。」
「對這些特性的支援是選擇性的,除非另有說明。」

MQ 實施:MQ 產品支援 JMS 1.1 規格定義的 JMSX 特性。

3.5.10
提供者特定的特性

「JMS 可為提供者特定的特性保留『JMS_<vendor_name>』特性名稱字首。」

MQ 實施:提供者特定的特性之用途是提供所需的特殊功能,以支援 JMS 與提供者原生用戶端一同使用。它們不應用於 JMS 以進行 JMS 訊息傳送。MQ 3.0.1 不使用提供者特定的特性。

4.4.8
分散式異動

「JMS 不需要提供者支援分散式異動。」

MQ 實施:此版本的 MQ 產品支援分散式異動。

4.4.9
多重階段作業

「對於 PTP <點對點分佈模式>,JMS 沒有為相同的佇列指定並行運作的 QueueReceiver 之語義;但是,JMS 並不禁止提供者支援此功能。」請參閱 JMS 規格的第 5.8 節,以取得更多資訊。

MQ 實施:MQ 實施支援三個佇列發送策略:錯誤修復、循環和單一 (預設)。如需更多資訊,請參閱「MQ 管理員指南」。


技術說明

本節包含以下主題的簡短說明:

系統時鐘設定

使用 MQ 系統時,您應仔細地同步化系統時鐘,並避免將它們設定為早於當前時間。

建議同步化

建議您同步化與 MQ 系統互動的所有主機上的時鐘。如果您使用訊息逾時 (TimeToLive),則此操作尤為重要。同步化主機時鐘失敗可能會導致 TimeToLive 無法按預期工作 (訊息可能不會發送)。您應在啟動任何代理程式之前同步化時鐘。

Solaris     您可以在本地主機上發出 rdate 指令,以與遠端主機同步化。(您必須是超級使用者 -- 即 root-- 才能執行該指令。)例如,以下指令可將本地主機 (稱其為 Host 2) 與遠端主機 Host1 同步化:

Linux     指令與 Solaris 類似,但是您必須提供 -s 選項:

Windows     您可以發出帶有時間子指令的網路指令,以將您的本地主機與遠端主機同步化。例如,以下指令可將本地主機 (稱其為 Host 2) 與遠端主機 Host1 同步化:

避免將系統時鐘設定為早於當前時間

您應避免將執行 MQ 代理程式的系統上之時鐘設定為早於當前時間。MQ 使用時間標記來幫助識別內部物件,如異動和持久訂閱。如果將系統時鐘設定為早於當前時間,從理論上講可能會產生重複的內部識別碼。代理程式透過引入識別碼的某些隨機性,以及在執行時偵測時鐘調整來嘗試進行補償,但是如果在代理程式未執行時,將系統時鐘調整為遠遠早於當前時間,則仍有識別碼重複的可能。

如果您需要將執行代理程式的系統上之系統時鐘設定為比當前時間早幾秒鐘,建議您在沒有異動或持久訂閱時進行,或者在代理程式未執行時進行,然後等待一段時間 (您調整的時鐘時間),再重新啟動代理程式。

但是,理想的方法是在啟動任何代理程式之前同步化時鐘,然後使用相應的技術以確保時鐘不會在佈署後有較大調整。

用戶端和代理程式上的作業系統定義的連線限制

在 Solaris 和 Linux 平台上,在其中執行用戶端或代理程式的 shell 對用戶端可以使用的檔案描述元的數目指定了軟式限制。在 MQ 系統中,用戶端建立的每個連線或代理程式接受的每個連線,均使用這些檔案描述元的其中之一。因此,如果不變更此限制,您的代理程式或用戶端便無法支援 256 個以上的連線 (在 Solaris 上) 或 1024 個以上的連線 (在 Linux 上)。(由於某些檔案描述元用於其他用途 [如用於基於檔案的永久性儲存區],因此實際的數目略小於上述數目。)

若要變更此限制,請參閱 ulimit 線上援助頁或以下增加檔案描述元以提昇基於檔案的永久性儲存區的效能中的說明。您需要在用戶端或代理程式將在其中執行的每個 shell 中變更此限制。

增加檔案描述元以提昇基於檔案的永久性儲存區的效能

在 Solaris 和 Linux 平台上,在基於檔案的預設永久性儲存區中儲存訊息的速度受該檔案儲存區可用的檔案描述元數目的影響。(Windows 沒有檔案描述元限制。)大量的描述元可讓系統更快地處理大量的永久性訊息。

若要提昇效能測試或佈署的效能,管理員應增加應用程式 (在此範例中指代理程式程序) 可用的最大數目的檔案描述元,然後透過更新特性值,來增加代理程式所使用的共用檔案描述元暫存區的容量:

此特性的值必須小於您系統上可用的檔案描述元的最大數目。

例如,在 Solaris 上,您可以使用 ulimit 指令來增加檔案描述元限制。程序會從它們的父系 (登入) shell 繼承系統限制。在 Solaris 上,有「硬式」限制和「軟式」限制。對於非超級使用者,應用程式的檔案描述元數目不能超過軟式限制,也不能超過硬式限制。

若要檢查目前的檔案描述元限制:

若要變更「超級」使用者的檔案描述元限制:

之後,從此 shell 建立的任何程序均可以開啟無限制的檔案描述元。因此,在此時執行 imqbroker 指令不會出現問題。

若要變更非超級使用者的檔案描述元限制:

其中 number1 小於 1024,number2 小於 number1

如果 1024 不夠,您可以選擇執行以下動作:

保護永久性資料

代理程式使用永久性儲存區,可包含與其他資訊一起暫時儲存的訊息檔案。由於這些訊息可能包含專用資訊,建議您保護資料儲存區,以防止未經授權的存取。

代理程式可以使用內建永久性儲存區或外掛永久性儲存區。

內建永久性儲存區

使用內建永久性儲存區的代理程式將永久性資料寫入平面檔資料儲存區,該儲存區位於:

其中 brokerName 是識別代理程式實例的名稱。

brokerName/filestore/ 目錄在代理程式實例首次啟動時建立。保護此目錄的程序取決於在其上執行代理程式的作業系統。

Solaris 和 Linux     IMQ_VARHOME/instances/brokerName/filestore/ 目錄的許可權取決於啟動代理程式實例的使用者的 umask。因此,透過適當地設定 umask,您可以限制啟動代理程式實例和讀取其永久性檔案的許可權。此外,管理員 (超級使用者) 可以透過將 IMQ_VARHOME/instances 目錄的許可權設定為 700 來保護永久性資料。

Windows     IMQ_VARHOME/instances/brokerName/filestore/ 目錄的許可權可以使用您所使用的 Windows 作業系統提供的機制來設定。這通常需要開啟目錄的特性對話方塊。

外掛永久性儲存區

使用外掛永久性儲存區的代理程式將永久性資料寫入 JDBC 相容的資料庫中。

對於由資料庫伺服器管理的資料庫 (例如 Oracle 資料庫),建議您建立使用者名稱和密碼,以存取 MQ 資料庫表格 (表格名稱以「IMQ」開頭)。如果資料庫不允許保護個別表格,請建立僅由 MQ 代理程式使用的專用資料庫。請諮詢資料庫供應商,以取得有關如何建立使用者名稱/密碼存取的說明文件。

代理程式開啟資料庫連線所需的使用者名稱和密碼可以作為代理程式配置特性提供。但是,在啟動代理程式時,將它們作為指令行選項提供會更加安全 (請參閱「MQ 管理員指南」的附錄 A「設定外掛永久性儲存區」)。

對於代理程式透過資料庫的 JDBC 驅動程式直接存取的內嵌式資料庫 (例如 Cloudscape 資料庫),通常透過在要儲存永久性資料的目錄上設定檔案許可權 (如上面的內建永久性儲存區中所述),來提供安全性。但是,若要確保代理程式和 imqdbmgr 公用程式均可讀取和寫入資料庫,則兩者應由同一個使用者執行。

代理程式記憶體配置

當代理程式將要耗盡 Java 物件使用的 JVM 堆疊儲存區空間時,會使用各種技術 (如流量控制和訊息交換) 來釋放記憶體。在極端情況下,它甚至會關閉用戶端連線以釋放記憶體,並降低訊息的流入量。因此,最好將最大 JVM 堆疊儲存區空間設定得足夠大,以避免發生此類情況。

但是,如果將最大 Java 堆疊儲存區空間設定得過大 (相對於系統實體記憶體),代理程式會持續增加 Java 堆疊儲存區空間,直至整個系統的記憶體用完。這會導致效能降低、不可預料的代理程式當機,和/或影響系統上執行的其他應用程式和服務的運作。

您可以使用 -Xmx Java 指令行引數配置合理的 Java 堆疊儲存區容量限制,來避免此問題。一般說來,最好是先評估正常時和高峰時的系統記憶體足跡,然後再配置 Java 堆疊儲存區容量,使其足以提供良好的效能,但又不會太大,以至出現系統記憶體問題。

用戶端記憶體用完錯誤

如果您正在執行處理大訊息或許多小訊息的 JMS 用戶端,則可能會遇到 OutOfMemoryError 錯誤。用戶端運行時間沒有記憶體錯誤 -- 它只是沒有足夠的記憶體從網路上複製訊息,並將它們發送到您的用戶端。

若要消除這些 OutofMemoryError 錯誤,請增加最大 Java 堆疊儲存區容量。您可以透過將相應的指令行選項傳送至 javajre 指令,來執行此作業。

在 Java2 上,請在執行用戶端應用程式時使用 -Xmx 選項。例如:

請注意以下限制:


如何報告問題

若要報告問題,請將郵件傳送至 imq-feedback@sun.com

如果您有支援合約並且在使用 MQ 時遇到問題,請使用以下其中一種機制與 Sun ONE 客戶支援聯絡:

為便於我們能夠最有效地協助您解決問題,請在聯絡支援人員時準備好以下資訊:


取得更多資訊

除 MQ 說明文件之外,您可以按照以下指示尋找其他資訊。

論壇

Sun ONE 軟體論壇

從以下位置可以找到 Sun ONE MQ 論壇:

Java 技術論壇

Java 技術論壇中的 JMS 論壇可能會引起您的興趣。

Sun 歡迎您提出意見

Sun 有志於改善其說明文件,並歡迎您提出意見和建議。請使用電子郵件將您的意見傳送給 Sun,位址如下:

請在電子郵件的主旨行中填寫文件的文件編號 (817-3830-10),並在內文中填寫書名 (Message Queue 3.0.1 版次注意事項)。


其他 Sun 資源

您可以在以下網際網路位置找到有用的 Sun ONE 資訊:


版權 © 2003 Sun Microsystems, Inc. 保留所有權利。

Sun、Sun Microsystems、Sun 標誌、Solaris、Java、Java 咖啡杯標誌、JDBC 和 JDBC Compliant 是 Sun Microsystems, Inc. 在美國和其他國家/地區的商標或註冊商標。Sun ONE Message Queue 的使用必須遵守其隨附的授權合約中所述的規定。