所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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_reply
或receive_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 重试请求应该与异常中给定的新对象一起发生。
所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |