所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
org.omg.PortableInterceptor
接口 ServerRequestInterceptorOperations
- 所有超级接口:
- InterceptorOperations
- 所有已知子接口:
- ServerRequestInterceptor
-
public interface ServerRequestInterceptorOperations
- extends InterceptorOperations
服务器端的请求 interceptor。
请求 Interceptor 用于通过 ORB 在指定点截取请求/应答序列流,以便服务能够查询请求信息并操作在客户端和服务器之间传播的服务上下文。请求 Interceptor 主要用途是使 ORB 服务能够在客户端和服务器之间传输上下文信息。请求 Interceptor 有两种类型:客户端和服务器端。
编写服务器端 Interceptor 需要实现 ServerRequestInterceptor 接口。
- 另请参见:
ServerRequestInfo
方法摘要 | |
---|---|
void |
receive_request_service_contexts(ServerRequestInfo ri) 允许 interceptor 处理服务上下文信息。 |
void |
receive_request(ServerRequestInfo ri) 允许 Interceptor 在所有信息(包括操作参数)可用后查询信息。 |
void |
send_exception(ServerRequestInfo ri) 允许 Interceptor 在向客户端抛出异常前查询异常信息并修改应答服务上下文。 |
void |
send_other(ServerRequestInfo ri) 允许 Interceptor 在请求引起了正常应答和异常之外的情况时查询可用信息。 |
void |
send_reply(ServerRequestInfo ri) 允许 Interceptor 在已调用目标操作后、向客户端返回应答前查询应答信息并修改应答服务上下文。 |
从接口 org.omg.PortableInterceptor.InterceptorOperations 继承的方法 |
---|
destroy, name |
方法详细信息 |
---|
receive_request_service_contexts
void receive_request_service_contexts(ServerRequestInfo ri) throws ForwardRequest
-
允许 interceptor 处理服务上下文信息。
在此截取点,Interceptor 必须从传入请求获取其服务上下文信息,并将其传输到
PortableInterceptor.Current
的槽 (slot)。在调用 servant 管理器之前调用此截取点。此时操作参数尚未可用。此截取点可能执行与目标调用相同的线程,也可能不执行。
此截取点可能抛出系统异常。如果抛出异常,则不调用任何其他 Interceptor 的
receive_request_service_contexts
操作。移除那些 Flow Stack 上的 Interceptor 并调用其send_exception
截取点。此截取点同样可能抛出
ForwardRequest
异常。如果 Interceptor 抛出此异常,则不调用任何其他 Interceptor 的receive_request_service_contexts
操作。移除那些 Flow Stack 上的 Interceptor 并调用其send_other
截取点。如果符合的 Interceptor 从此截取点抛出系统异常,则它们应该完全遵守
completion_status
语义。completion_status
应为 COMPLETED_NO。 -
-
- 参数:
ri
- 关于将被截取的当前请求的信息。- 抛出:
ForwardRequest
- 抛出此异常指示 ORB 重试请求应该与异常中给定的新对象一起发生。
receive_request
void receive_request(ServerRequestInfo ri) throws ForwardRequest
-
允许 Interceptor 在所有信息(包括操作参数)可用后查询信息。此截取点应该执行与目标调用相同的线程。
在 DSI 模型中,因为在用户代码调用
arguments
时参数首次可用,所以将从arguments
内部调用receive_request
。有可能不是在 DSI 模型中调用arguments
。目标可以在调用arguments
之前调用set_exception
。ORB 应保证通过arguments
或set_exception
调用receive_request
一次。如果通过set_exception
调用,则请求参数将导致抛出NO_RESOURCES
,并带有标准次要代码 1。此截取点可能抛出系统异常。如果抛出异常,则不调用任何其他 Interceptor 的
receive_request
操作。移除那些 Flow Stack 上的 Interceptor 并调用其send_exception
截取点。此截取点同样可能抛出
ForwardRequest
异常。如果 Interceptor 抛出此异常,则不调用任何其他 Interceptor 的receive_request
操作。移除那些 Flow Stack 上的 Interceptor 并调用其send_other
截取点。如果符合的 Interceptor 从此截取点抛出系统异常,则它们应该完全遵守
completion_status
语义。completion_status
应为COMPLETED_NO
。 -
-
- 参数:
ri
- 关于将被截取的当前请求的信息。- 抛出:
ForwardRequest
- 抛出此异常指示 ORB 重试请求应该与异常中给定的新对象一起发生。
send_reply
void send_reply(ServerRequestInfo ri)
-
允许 Interceptor 在已调用目标操作后、向客户端返回应答前查询应答信息并修改应答服务上下文。此截取点应该执行与目标调用相同的线程。
此截取点可能抛出系统异常。如果抛出异常,则不调用任何其他 Interceptor 的
send_reply
操作。Flow Stack 中剩余的 Interceptor 将使其send_exception
截取点被调用。如果符合的 Interceptor 从此截取点抛出系统异常,则它们应该完全遵守
completion_status
语义。completion_status
应为COMPLETED_YES
。 -
-
- 参数:
ri
- 关于将被截取的当前请求的信息。
send_exception
void send_exception(ServerRequestInfo ri) throws ForwardRequest
-
允许 Interceptor 在向客户端抛出异常前查询异常信息并修改应答服务上下文。当发生异常时,将调用此截取点。此截取点应该执行与目标调用相同的线程。
此截取点可能抛出系统异常。这可以更改连续 Interceptor(从 Flow Stack 中移除的)调用
send_exception
收到的异常。对客户端抛出的异常将是 Interceptor 抛出的最终异常或者原始异常(如果没有 Interceptor 更改了异常)。此截取点同样可能抛出
ForwardRequest
异常。如果 Interceptor 抛出此异常,则不调用任何其他 Interceptor 的send_exception
操作。将调用 Flow Stack 中剩余 Interceptor 的send_other
截取点。如果异常的
completion_status
不是COMPLETED_NO
,则此截取点抛出ForwardRequest
异常是不恰当的。将失去请求的最多一次 (at-most-once) 语义。如果符合的 Interceptor 从此截取点抛出系统异常,则它们应该完全遵守
completion_status
语义。如果原始异常为系统异常,则新异常的completion_status
将与原始异常相同。如果原始异常为用户异常,则新异常的completion_status
应为COMPLETED_YES
。 -
-
- 参数:
ri
- 关于将被截取的当前请求的信息。- 抛出:
ForwardRequest
- 抛出此异常指示 ORB 重试请求应该与异常中给定的新对象一起发生。
send_other
void send_other(ServerRequestInfo ri) throws ForwardRequest
-
允许 Interceptor 在请求引起了正常应答和异常之外的情况时查询可用信息。例如,请求可以引起重试(例如,收到带有
LOCATION_FORWARD
状态的 GIOP 应答)。此截取点应该执行与目标调用相同的线程。此截取点可能抛出系统异常。如果抛出异常,则不调用任何其他 Interceptor 的
send_other
操作。将调用 Flow Stack 中剩余 Interceptor 的send_exception
截取点。此截取点同样可能抛出
ForwardRequest
异常。如果 Interceptor 抛出此异常,则使用ForwardRequest
异常提供的新信息调用连续 Interceptor 的send_other
操作。如果符合的 Interceptor 从此截取点抛出系统异常,则它们应该完全遵守
completion_status
语义。completion_status
应为COMPLETED_NO
。 -
-
- 参数:
ri
- 关于将被截取的当前请求的信息。- 抛出:
ForwardRequest
- 抛出此异常指示 ORB 重试请求应该与异常中给定的新对象一起发生。
所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |