JavaTM 2 Platform
Standard Ed. 6

org.omg.PortableInterceptor
介面 ClientRequestInterceptorOperations

所有父級介面:
InterceptorOperations
所有已知子介面:
ClientRequestInterceptor

public interface ClientRequestInterceptorOperations
extends InterceptorOperations

客戶端的請求 interceptor。

請求 Interceptor 用於通過 ORB 在指定點截取請求/應答序列串流,以便服務能夠查詢請求資訊並操作在客戶端和伺服器之間傳播的服務上下文。請求 Interceptor 主要用途是使 ORB 服務能夠在客戶端和伺服器之間傳輸上下文資訊。請求 Interceptor 有兩種型別:客戶端和伺服器端。

編寫客戶端 Interceptor 需要實作 ClientRequestInterceptor 介面。

另請參見:
ClientRequestInfo

方法摘要
 void receive_exception(ClientRequestInfo ri)
          指示 interceptor 發生異常。
 void receive_other(ClientRequestInfo ri)
          允許 Interceptor 在請求引起了正常應答和異常之外的情況時查詢可用資訊。
 void receive_reply(ClientRequestInfo ri)
          允許 Interceptor 在從伺服器返回後但在向客戶端返回控制元件前查詢資訊。
 void send_poll(ClientRequestInfo ri)
          允許 Interceptor 在輪詢獲取應答序列的與時間無關的調用(Time-Independent Invocation,TII)時查詢資訊。
 void send_request(ClientRequestInfo ri)
          允許 Interceptor 在請求被發送到伺服器前查詢請求資訊並修改服務上下文。
 
從介面 org.omg.PortableInterceptor.InterceptorOperations 繼承的方法
destroy, name
 

方法詳細資訊

send_request

void send_request(ClientRequestInfo ri)
                  throws ForwardRequest
允許 Interceptor 在請求被發送到伺服器前查詢請求資訊並修改服務上下文。

此截取點可能拋出系統異常。如果拋出異常,則不調用其他任何 Interceptor 的 send_request 操作。移除那些 Flow Stack 上的 Interceptor 並調用其 receive_exception 截取點。此截取點也可能拋出 ForwardRequest 異常。如果 Interceptor 拋出此異常,則不調用其他任何 Interceptor 的 send_request 操作。移除那些 Flow Stack 上的 Interceptor 並調用其 receive_other 截取點。

符合的 Interceptor 如果從此截取點拋出系統異常,則它們應該完全遵守 completion_status 語義。completion_status 應為 COMPLETED_NO

參數:
ri - 關於將被截取的當前請求的資訊。
拋出:
ForwardRequest - 拋出此異常指示 ORB 重試請求應該與異常中給定的新物件一起發生。

send_poll

void send_poll(ClientRequestInfo ri)
允許 Interceptor 在輪詢獲取應答序列的與時間無關的調用(Time-Independent Invocation,TII)時查詢資訊。

利用 TII,應用程序可以輪詢對之前由輪詢客戶端或其他客戶端發送的請求所做出的回應。此輪詢將通過 send_poll 截取點報告給 Interceptor,回應將通過 receive_replyreceive_exception 截取點返回。如果在超過輪詢逾時期前沒有獲得回應,則拋出系統異常 TIMEOUT,並使用該異常調用 receive_exception

此截取點可能拋出系統異常。如果拋出異常,則不調用其他任何 Interceptor 的 send_poll 操作。移除那些 Flow Stack 上的 Interceptor 並調用其 receive_exception 截取點。

如果符合的 Interceptor 從此截取點拋出系統異常,則它們應該完全遵守 completion_status 語義。completion_status 應為 COMPLETED_NO

參數:
ri - 關於將被截取的當前請求的資訊。
拋出:
TIMEOUT - 如果在超過輪詢逾時期前沒有獲得回應。

receive_reply

void receive_reply(ClientRequestInfo ri)
允許 Interceptor 在從伺服器返回後但在向客戶端返回控制元件前查詢資訊。

此截取點可能拋出系統異常。如果拋出異常,則不調用其他任何 Interceptor 的 receive_reply 操作。將調用 Flow Stack 中剩餘 Interceptor 的 receive_exception 截取點。

如果符合的 Interceptor 從此截取點拋出系統異常,則它們應該完全遵守 completion_status 語義。completion_status 應為 COMPLETED_YES

參數:
ri - 關於將被截取的當前請求的資訊。

receive_exception

void receive_exception(ClientRequestInfo ri)
                       throws ForwardRequest
指示 interceptor 發生異常。允許 Interceptor 在向客戶端拋出異常前查詢異常資訊。

此截取點可能拋出系統異常。這等效於更改連續 Interceptor(從 Flow Stack 中移除的)調用 receive_exception 接收到的異常。對客戶端拋出的異常將是 Interceptor 拋出的最終異常或者原始異常(如果沒有 Interceptor 更改了異常)。

此截取點同樣可能拋出 ForwardRequest 異常。如果 Interceptor 拋出此異常,則不調用其他任何 Interceptor 的 receive_exception 操作。移除 Flow Stack 中剩餘的 Interceptor 並調用其 receive_other 截取點。

如果異常的 completion_status 不是 COMPLETED_NO,則此截取點拋出 ForwardRequest 異常是不恰當的。將失去請求的最多一次 (at-most-once) 語義。

如果符合的 Interceptor 從此截取點拋出系統異常,則它們應該完全遵守 completion_status 語義。如果原始異常為系統異常,則新異常的 completion_status 將與原始異常相同。如果原始異常為使用者異常,則新異常的 completion_status 應為 COMPLETED_YES

在某些情況下,異常(如 COMM_FAILURE)可能導致重試請求,具體取決於實行的策略。雖然這種重試對於 Interceptor 而言是一個新的請求,但是在原始請求和重試請求之間仍然存在一種相關性:因為沒有向客戶端返回控制資訊,所以原始請求和重試請求的 PortableInterceptor.Current 是相同的。

參數:
ri - 關於將被截取的當前請求的資訊。
拋出:
ForwardRequest - 拋出此異常指示 ORB 重試請求應該與異常中給定的新物件一起發生。

receive_other

void receive_other(ClientRequestInfo ri)
                   throws ForwardRequest
允許 Interceptor 在請求引起了正常應答和異常之外的情況時查詢可用資訊。例如,請求可以引起重試(例如,收到帶有 LOCATION_FORWARD 狀態的 GIOP 應答);又如非同步調用時,請求後不會立即應答,但是將向客戶端返回控制資訊並調用終端截取點。

對於重試而言,當已經指示重試後可能執行一個新的請求,也可能不執行,具體取決於實行的策略。如果執行新的請求,則雖然這種重試對於 Interceptor 而言是一個新的請求,但是在原始請求和重試請求之間仍然存在一種相關性:因為沒有向客戶端返回控制資訊,所以原始請求和重試請求的請求域 PortableInterceptor.Current 是相同的。

此截取點可能拋出系統異常。如果拋出異常,則不調用其他任何 Interceptor 的 receive_other 操作。移除 Flow Stack 中剩餘的 Interceptor 並調用其 receive_exception 截取點。

此截取點同樣可能拋出 ForwardRequest 異常。如果 Interceptor 拋出此異常,則使用 ForwardRequest 異常提供的新資訊調用連續 Interceptor 的 receive_other 操作。

如果符合的 Interceptor 從此截取點拋出系統異常,則它們應該完全遵守 completion_status 語義。completion_status 應該是 COMPLETED_NO。如果已經完成了目標調用,則將調用此截取點。

參數:
ri - 關於將被截取的當前請求的資訊。
拋出:
ForwardRequest - 拋出此異常指示 ORB 重試請求應該與異常中給定的新物件一起發生。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only