public interface ClientRequestInfoOperations
客户端请求 interceptor 可访问的请求信息。
ClientRequestInfo
上的某些属性和操作并不是对所有的截取点都有效。下表展示了每个属性或操作的有效性。如果无效,则试图访问它将导致抛出 BAD_INV_ORDER
,并带有标准次要代码 14。
send_request | send_poll | receive_reply | receive_exception | receive_other | |
---|---|---|---|---|---|
继承自 RequestInfo: | |||||
request_id |
是 | 是 | 是 | 是 | 是 |
operation |
是 | 是 | 是 | 是 | 是 |
arguments |
是1 | 否 | 是 | 否 | 否 |
exceptions |
是 | 否 | 是 | 是 | 是 |
contexts |
是 | 否 | 是 | 是 | 是 |
operation_context |
是 | 否 | 是 | 是 | 是 |
result |
否 | 否 | 是 | 否 | 否 |
response_expected |
是 | 是 | 是 | 是 | 是 |
sync_scope |
是 | 否 | 是 | 是 | 是 |
reply_status |
否 | 否 | 是 | 是 | 是 |
forward_reference |
否 | 否 | 否 | 否 | 是2 |
get_slot |
是 | 是 | 是 | 是 | 是 |
get_request_service_context |
是 | 否 | 是 | 是 | 是 |
get_reply_service_context |
否 | 否 | 是 | 是 | 是 |
特定于 ClientRequestInfo: | |||||
target |
是 | 是 | 是 | 是 | 是 |
effective_target |
是 | 是 | 是 | 是 | 是 |
effective_profile |
是 | 是 | 是 | 是 | 是 |
received_exception |
否 | 否 | 否 | 是 | 否 |
received_exception_id |
否 | 否 | 否 | 是 | 否 |
get_effective_component |
是 | 否 | 是 | 是 | 是 |
get_effective_components |
是 | 否 | 是 | 是 | 是 |
get_request_policy |
是 | 否 | 是 | 是 | 是 |
add_request_service_context |
是 | 否 | 否 | 否 | 否 |
ClientRequestInfo
传递给 send_request
时,对于每个参数(无论它是 in、inout 还是 out),列表中都有一个对应的条目。但只有 in 和 inout 参数可用。reply_status
属性不是 LOCATION_FORWARD
,则访问此属性将抛出 BAD_INV_ORDER
,并带有标准次要代码 14。
ClientRequestInterceptor
方法摘要 | |
---|---|
void |
add_request_service_context(ServiceContext service_context, boolean replace) 允许 Interceptor 将服务上下文添加到请求。 |
TaggedProfile |
effective_profile() 返回将用来发送请求的配置文件。 |
Object |
effective_target() 返回实际调用操作的对象。 |
TaggedComponent |
get_effective_component(int id) 返回为此请求选择的配置文件中带有给定 ID 的 IOP.TaggedComponent 。 |
TaggedComponent[] |
get_effective_components(int id) 返回为此请求选择的配置文件中具有给定 ID 的带标记组件所组成的数组。 |
Policy |
get_request_policy(int type) 返回此操作实行的给定策略。 |
String |
received_exception_id() 返回将向客户端返回的异常的存储库 id。 |
Any |
received_exception() 返回一个 any,它包含要向客户端返回的异常。 |
Object |
target() 返回客户端调用以执行操作的对象。 |
从接口 org.omg.PortableInterceptor.RequestInfoOperations 继承的方法 |
---|
arguments, contexts, exceptions, forward_reference, get_reply_service_context, get_request_service_context, get_slot, operation_context, operation, reply_status, request_id, response_expected, result, sync_scope |
方法详细信息 |
---|
Object target()
effective_target()
Object effective_target()
reply_status
为
LOCATION_FORWARD
,则后续请求中
effective_target
将包含转发的 IOR,而目标保持不变。
target()
TaggedProfile effective_profile()
Any received_exception()
如果异常是不能插入 any 的用户异常(例如,该异常是未知的或绑定不提供 TypeCode
),则此属性将是一个包含系统异常 UNKNOWN
并带有标准次要代码 (minor code) 1 的 any。但是,异常的存储库 id 在 received_exception_id
属性中可用。
received_exception_id()
String received_exception_id()
TaggedComponent get_effective_component(int id)
IOP.TaggedComponent
。
如果给定的组件 ID 对应多个组件,则此操作返回哪个组件是不确定的。如果给定的组件 ID 对应于多个组件,则应调用 get_effective_components
。
id
- 将返回的组件的组件 id。
IOP.TaggedComponent
。
BAD_PARAM
- 如果不存在对应于给定组件 ID 的组件,则抛出此异常,并带有标准次代码 28。
get_effective_components(int)
TaggedComponent[] get_effective_components(int id)
id
- 将返回的组件的组件 id。
TaggedComponent
对象的数组,每个对象都包含给定标识符。
BAD_PARAM
- 如果不存在对应于给定组件 ID 的组件,则抛出此异常,并带有标准次代码 28。
get_effective_component(int)
Policy get_request_policy(int type)
type
- 指定将返回策略的策略类型。
CORBA.Policy
。
INV_POLICY
- 如果策略类型因为此 ORB 不支持指定类型或该类型的策略对象不与此 Object 关联而无效,则抛出此异常,并带有标准次代码 1。
PortableInterceptor
包中关于限制/未实现特性的注释
void add_request_service_context(ServiceContext service_context, boolean replace)
没有对服务上下文的顺序做出任何声明。它们可能按添加的顺序出现,也可能不是如此。
service_context
- 将添加到请求的
IOP.ServiceContext
。
replace
- 在已经存在具有给定 ID 的服务上下文时指示此操作的行为。如果为 false,则抛出
BAD_INV_ORDER
,并带有标准次要代码 15。如果为 true,则用新服务上下文取代现有的服务上下文。