org.omg.PortableInterceptor

接口
异常
所有已知子接口:
ClientRequestInfo, ClientRequestInfoOperations, RequestInfo, ServerRequestInfo, ServerRequestInfoOperations

public interface RequestInfoOperations

Interceptor 可访问的请求信息。

每个截取点都给定了一个对象,Interceptor 可以通过该对象访问请求信息。客户端和服务器端的截取点关注不同的信息,因此有两种信息对象:ClientRequestInfo 传递给客户端的截取点,ServerRequestInfo 传递给服务器端的截取点。但也有两者都需要的信息,所以这两个接口继承自同一个接口:RequestInfo

另请参见:
ClientRequestInfo, ServerRequestInfo

方法摘要
 Parameter[] arguments()
          返回一个 Parameter 对象数组,包含将调用的操作上的参数。
 String[] contexts()
          返回一个 String 对象数组,这些对象描述可以在此操作调用上传递的上下文。
 TypeCode[] exceptions()
          返回一个 TypeCode 对象数组,这些对象描述此操作调用可能抛出的用户异常的 TypeCode
 Object forward_reference()
          如果 reply_status 属性为 LOCATION_FORWARD,则包含要将请求转发到的对象。
 ServiceContext get_reply_service_context(int id)
          返回具有给定 ID 的与应答关联的服务上下文复本。
 ServiceContext get_request_service_context(int id)
          返回具有给定 ID 的与请求关联的服务上下文复本。
 Any get_slot(int id)
          返回请求域内 PortableInterceptor.Current 给定槽 (slot) 中的数据。
 String[] operation_context()
          返回一个 String 对象数组,这些对象包含将在请求上发送上下文。
 String operation()
          返回将被调用的操作的名称。
 short reply_status()
          描述操作调用结果的状态。
 int request_id()
          返回唯一地标识激活的请求/应答序列的 id。
 boolean response_expected()
          指示是否希望响应。
 Any result()
          返回一个 any,它包含该操作调用的结果。
 short sync_scope()
          定义在控制信息返回到客户端前请求应前进的距离。
 

方法详细信息

request_id

int request_id()
返回唯一地标识激活的请求/应答序列的 id。请求/应答序列一结束此 ID 即可重用。注意,此 id 不同于 GIOP request_id。如果使用的传送机制是 GIOP,则这些 ID 很可能是相同的,但是不保证也不要求如此。


operation

String operation()
返回将被调用的操作的名称。


arguments

Parameter[] arguments()
返回一个 Parameter 对象数组,包含将调用的操作上的参数。如果没有参数,则此属性将是一个 0 长度数组。

并非所有环境都提供对参数的访问。例如,使用 Java 可移植绑定时参数将不可用。在这些环境中访问此属性时,将抛出 NO_RESOURCES,并带有标准次要代码 1。

注:对于 DSI/DII 调用参数是可用的。

抛出:
NO_RESOURCES - 如果参数不可用。
另请参见:
PortableInterceptor 包中关于限制/未实现特性的注释

exceptions

TypeCode[] exceptions()
返回一个 TypeCode 对象数组,这些对象描述此操作调用可能抛出的用户异常的 TypeCode。如果没有用户异常,则此方法返回一个长度为 0 的数组。

并非所有环境都提供对异常列表的访问。例如,使用 Java 可移植绑定时异常列表将不可用。在这些环境中访问此属性时,将抛出 NO_RESOURCES,并带有标准次要代码 1。

注:异常对于 DSI/DII 调用是可用的。

抛出:
NO_RESOURCES - 如果异常不可用。
另请参见:
PortableInterceptor 包中关于限制/未实现特性的注释

contexts

String[] contexts()
返回一个 String 对象数组,这些对象描述可以在此操作调用上传递的上下文。如果没有上下文,则此方法返回一个长度为 0 的数组。

并非所有环境都提供对上下文列表的访问。例如,使用 Java 可移植绑定时上下文列表将不可用。在这些环境中访问此属性时,将抛出 NO_RESOURCES,并带有标准次要代码 1。

注:上下文对于 DSI/DII 调用是可用的。

抛出:
NO_RESOURCES - 如果上下文不可用。
另请参见:
PortableInterceptor 包中关于限制/未实现特性的注释

operation_context

String[] operation_context()
返回一个 String 对象数组,这些对象包含将在请求上发送上下文。

并非所有环境都提供对上下文的访问。例如,使用 Java 可移植绑定时上下文将不可用。在这些环境中访问此属性时,将抛出 NO_RESOURCES,并带有标准次代码 1。

注:operation_context 对于 DSI/DII 调用是可用的。

抛出:
NO_RESOURCES - 如果操作上下文不可用。
另请参见:
PortableInterceptor 包中关于限制/未实现特性的注释

result

Any result()
返回一个 any,它包含该操作调用的结果。如果操作返回类型为空,则此属性将是包含 TCKind 值为 tk_void 的类型代码的 any,并且该 any 不包含任何值。

并非所有环境都提供对结果的访问。例如,使用 Java 可移植绑定时结果将不可用。在这些环境中访问此属性时,将抛出 NO_RESOURCES,并带有标准次要代码 1。

注:结果对于 DSI/DII 调用是可用的。

抛出:
NO_RESOURCES - 如果结果不可用。
另请参见:
PortableInterceptor 包中关于限制/未实现特性的注释

response_expected

boolean response_expected()
指示是否希望响应。

对于客户端,当 response_expected 为 false 时不返回应答,因此不能调用 receive_reply。不发生异常时调用 receive_other,发生异常时调用 receive_exception

此属性在客户端 send_poll 内部为 true。


sync_scope

short sync_scope()
定义在控制信息返回到客户端前请求应前进的距离。这已在 Messaging 规范中定义,仅当 response_expected 为 false 时才相关。如果 response_expected 为 true,则 sync_scope 的值是不确定的。此属性可以是以下值之一:
  • Messaging.SYNC_NONE
  • Messaging.SYNC_WITH_TRANSPORT
  • Messaging.SYNC_WITH_SERVER
  • Messaging.SYNC_WITH_TARGET
对于服务器所有的域而言,将从目标操作调用的返回中创建应答,但不会将该应答返回给客户端。尽管它不会返回给客户端,但确实发生了应答,因此将执行正常服务器端截取点(即 receive_request_service_contextsreceive_requestsend_replysend_exception)。

对于 SYNC_WITH_SERVERSYNC_WITH_TARGET,在调用目标前,服务器将一个空应答发送回客户端。此应答将不会被服务器端的 Interceptor 截取。

另请参见:
PortableInterceptor 包中关于限制/未实现特性的注释

reply_status

short reply_status()
描述操作调用结果的状态。返回值可以是以下值之一:
  • PortableInterceptor.SUCCESSFUL
  • PortableInterceptor.SYSTEM_EXCEPTION
  • PortableInterceptor.USER_EXCEPTION
  • PortableInterceptor.LOCATION_FORWARD
  • PortableInterceptor.TRANSPORT_RETRY
对于客户端:
  • receive_reply 截取点内,此方法仅返回 SUCCESSFUL
  • .
  • receive_exception 截取点内,此方法将返回 SYSTEM_EXCEPTIONUSER_EXCEPTION
  • receive_other 截取点内,此方法将返回以下任意值:SUCCESSFULLOCATION_FORWARDTRANSPORT_RETRYSUCCESSFUL 表示成功返回了异步请求。LOCATION_FORWARD 表示返回了应答,并以 LOCATION_FORWARD 作为其状态。TRANSPORT_RETRY 表示传送机制指示重试 - 例如,带有 NEEDS_ADDRESSING_MODE 状态的 GIOP 应答。
对于服务器:
  • send_reply 截取点内,此方法仅返回 SUCCESSFUL
  • send_exception 截取点内,此方法将返回 SYSTEM_EXCEPTIONUSER_EXCEPTION
  • send_other 截取点内,此属性将是以下任意值:SUCCESSFULLOCATION_FORWARDSUCCESSFUL 表示成功返回了异步请求。LOCATION_FORWARD 表示返回了应答,并以 LOCATION_FORWARD 作为其状态。

另请参见:
SUCCESSFUL, SYSTEM_EXCEPTION, USER_EXCEPTION, LOCATION_FORWARD, TRANSPORT_RETRY

forward_reference

Object forward_reference()
如果 reply_status 属性为 LOCATION_FORWARD,则包含要将请求转发到的对象。转发的请求是否将实际发生是不确定的。


get_slot

Any get_slot(int id)
             throws InvalidSlot
返回请求域内 PortableInterceptor.Current 给定槽 (slot) 中的数据。

如果尚未设置给定槽,则返回一个包含 TCKind 值为 tk_null 的类型代码的 any。

参数:
id - 将返回的槽的 SlotId
返回:
使用给定标识符获取的槽数据,以 any 的形式存在。
抛出:
InvalidSlot - 如果 ID 定义的不是已分配的槽,则抛出此异常。
另请参见:
Current

get_request_service_context

ServiceContext get_request_service_context(int id)
返回具有给定 ID 的与请求关联的服务上下文复本。

参数:
id - 将返回的服务上下文的 IOP.ServiceId
返回:
通过给定标识符获取的 IOP.ServiceContext
抛出:
BAD_PARAM - 如果请求的服务上下文不包含对应于该 ID 的条目,则抛出此异常,并带有标准次代码 26。

get_reply_service_context

ServiceContext get_reply_service_context(int id)
返回具有给定 ID 的与应答关联的服务上下文复本。

参数:
id - 将返回的服务上下文的 IOP.ServiceId
返回:
具有给定标识符的 IOP.ServiceContext
抛出:
BAD_PARAM - 如果请求的服务上下文不包含对应于该 ID 的条目,则抛出此异常,并带有标准次要代码 26。