Sun Cluster 資料服務開發者指南 (適用於 Solaris 作業系統)

伺服器回覆用戶端的方式

處理註冊後,接收到註冊請求的伺服器會將 SC_REPLY 訊息傳送至用戶端開啟的 TCP 連線。該用戶端將關閉連線。在該用戶端接收到來自伺服器的 SC_REPLY 訊息之前,必須保持 TCP 連接的開啟狀態。

例如,該用戶端執行下列動作:

  1. 開啟至伺服器的 TCP 連接

  2. 等待連接變得「可寫入」

  3. 發送 SC_CALLBACK_REG 訊息 (其中包含 ADD_CLIENT 訊息)

  4. 等待伺服器中的 SC_REPLY 訊息

  5. 接收伺服器中的 SC_REPLY 訊息

  6. 接收表明該伺服器已關閉連接 (從套接字讀取 0 位元組) 的指示器

  7. 關閉連接

過一段時間,用戶端將執行以下動作︰

  1. 開啟至伺服器的 TCP 連接

  2. 等待連接變得「可寫入」

  3. 發送 SC_CALLBACK_REG 訊息 (其中包含 REMOVE_CLIENT 訊息)

  4. 等待伺服器中的 SC_REPLY 訊息

  5. 接收伺服器中的 SC_REPLY 訊息

  6. 接收表明該伺服器已關閉連接 (從套接字讀取 0 位元組) 的指示器

  7. 關閉連接

每當伺服器接收到來自用戶端的 SC_CALLBACK_REG 訊息時,該伺服器均會透過開啟的同一連接發送 SC_REPLY 訊息。此訊息指定該作業是成功還是失敗。SC_REPLY XML DTD 包含 SC_REPLY 訊息的 XML 文件類型定義,以及此訊息可包含的可能錯誤訊息。

SC_REPLY 訊息的內容

SC_REPLY 訊息將指定作業是否成功或失敗。此訊息包含 CRNP 訊息的版本、狀態程式碼和更詳細說明狀態程式碼的狀態訊息。下表說明狀況碼的可能值。

狀況碼 

描述 

OK

已成功處理訊息。 

RETRY

由於暫態的錯誤,伺服器拒絕用戶端註冊。用戶端應嘗試使用其他引數再次註冊。 

LOW_RESOURCE

叢集資源較低時,用戶端僅可稍後再試。叢集管理員也可以在叢集中增加資源。 

SYSTEM_ERROR

發生了嚴重的問題。請聯絡叢集管理員。 

FAIL

授權失敗,或者其他問題導致了註冊失敗。 

MALFORMED

XML 要求的形式異常,因此無法進行剖析。 

INVALID

XML 請求無效,即,其不滿足 XML 規格。 

VERSION_TOO_HIGH

訊息的版本太高,以致無法成功處理該訊息。 

VERSION_TOO_LOW

訊息的版本太低,以致無法成功處理該訊息。 

用戶端處理錯誤狀況的方式

在正常狀況下,傳送 SC_CALLBACK_REG 訊息的用戶端將接收到一則指示註冊成功或失敗的回覆。

然而,當某個用戶端註冊時,伺服器可能遇到錯誤狀況阻止其向該用戶端傳送 SC_REPLY 訊息。在此情況下,註冊在錯誤狀況發生之前可能已成功,或者已失敗,還可能尚未經過處理。

由於伺服器必須用做叢集中容錯移轉或高度可用的伺服器,因此此錯誤狀況並不意味著服務結束。事實上,該伺服器不久就可以開始將事件發送給新註冊的用戶端。

若要修正這些狀況,您的用戶端應該執行以下動作︰