public interface ServerRequestInfoOperations
服务器端请求 interceptor 可访问的请求信息。
某些 ServerRequestInfo
上的属性和操作并不是对所有的截取点都有效。下表展示了每个属性或操作的有效性。如果无效,则试图访问它将导致抛出 BAD_INV_ORDER
,并带有标准次要代码 14。
receive_request_ service_contexts |
receive_request | send_reply | send_exception | send_other | |
---|---|---|---|---|---|
继承自 RequestInfo: | |||||
request_id |
是 | 是 | 是 | 是 | 是 |
operation |
是 | 是 | 是 | 是 | 是 |
arguments |
否 | 是1 | 是 | 否2 | 否2 |
exceptions |
否 | 是 | 是 | 是 | 是 |
contexts |
否 | 是 | 是 | 是 | 是 |
operation_context |
否 | 是 | 是 | 否 | 否 |
result |
否 | 否 | 是 | 否 | 否 |
response_expected |
是 | 是 | 是 | 是 | 是 |
sync_scope |
是 | 是 | 是 | 是 | 是 |
request_id | 是 | 是 | 是 | 是 | 是 |
operation | 是 | 是 | 是 | 是 | 是 |
arguments | 否 | 是1 | 是 | 否2 | 否2 |
exceptions | 否 | 是 | 是 | 是 | 是 |
contexts | 否 | 是 | 是 | 是 | 是 |
operation_context | 否 | 是 | 是 | 否 | 否 |
result | 否 | 否 | 是 | 否 | 否 |
response_expected | 是 | 是 | 是 | 是 | 是 |
sync_scope | 是 | 是 | 是 | 是 | 是 |
reply_status | 否 | 否 | 是 | 是 | 是 |
forward_reference | 否 | 否 | 否 | 否 | 是2 |
get_slot | 是 | 是 | 是 | 是 | 是 |
get_request_service_context | 是 | 否 | 是 | 是 | 是 |
get_reply_service_context | 否 | 否 | 是 | 是 | 是 |
特定于 ServerRequestInfo: | |||||
sending_exception | 否 | 否 | 否 | 是 | 否 |
object_id | 否 | 是 | 是 | 是3 | 是3 |
adapter_id | 否 | 是 | 是 | 是3 | 是3 |
server_id | 否 | 是 | 是 | 是 | 是 |
orb_id | 否 | 是 | 是 | 是 | 是 |
adapter_name | 否 | 是 | 是 | 是 | 是 |
target_most_derived_interface | 否 | 是 | 否4 | 否4 | 否4 |
get_server_policy | 是 | 是 | 是 | 是 | 是 |
set_slot | 是 | 是 | 是 | 是 | 是 |
target_is_a | 否 | 是 | 否4 | 否4 | 否4 |
add_reply_service_context | 是 | 是 | 是 | 是 | 是 |
ServerRequestInfo
传递给 receive_request
时,对于每个参数(无论它是 in、inout 还是 out),列表中都有一个对应的条目。但只有 in 和 inout 参数可用。reply_status
属性不是 LOCATION_FORWARD
,则访问此属性将抛出 BAD_INV_ORDER
,并带有标准次要代码 14。NO_RESOURCES
,并带有标准次要代码 1。ServantLocator
的 POA,则 ORB 将在调用 ServantLocator.postinvoke()
后调用该截取点。
ServerRequestInterceptor
方法摘要 | |
---|---|
byte[] |
adapter_id() 返回对象适配器的不透明标识符。 |
String[] |
adapter_name() 返回字符串序列,这些字符串标识正处理此请求的对象适配器实例。 |
void |
add_reply_service_context(ServiceContext service_context, boolean replace) 允许 Interceptor 将服务上下文添加到请求。 |
Policy |
get_server_policy(int type) 返回此操作实行的具有给定策略类型的策略。 |
byte[] |
object_id() 返回描述该操作调用目标的不透明 object_id 。 |
String |
orb_id() 返回用于创建 ORB 的 ID。 |
Any |
sending_exception() 返回一个 any,它包含将向客户端返回的异常。 |
String |
server_id() 返回使用 -ORBServerId 参数的 ORB::init 上指定的服务器 ID。 |
void |
set_slot(int id, Any data) 允许 Interceptor 在请求域中的 PortableInterceptor.Current 内设置槽 (slot)。 |
boolean |
target_is_a(String id) 如果 servant 是给定的存储库 id,则返回 true;若不是则返回 false。 |
String |
target_most_derived_interface() 返回 servant 最终派生接口的存储库 id。 |
从接口 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 |
方法详细信息 |
---|
Any sending_exception()
如果异常是不能插入 any 的用户异常(例如,该异常是未知的或绑定不提供 TypeCode
),则此属性将是一个包含系统异常 UNKNOWN
并带有标准次要代码 1 的 any。
byte[] object_id()
object_id
。
byte[] adapter_id()
String server_id()
String orb_id()
String[] adapter_name()
String target_most_derived_interface()
Policy get_server_policy(int type)
CORBA.Policy
对象只应该是通过
register_policy_factory
注册了其类型的策略。
type
- 指定将返回的策略的
CORBA.PolicyType
。
CORBA.Policy
。
INV_POLICY
- 如果没有通过
register_policy_factory
注册给定类型的策略,则抛出此异常,并带有标准次要代码 2。
ORBInitInfoOperations.register_policy_factory(int, org.omg.PortableInterceptor.PolicyFactory)
void set_slot(int id, Any data) throws InvalidSlot
PortableInterceptor.Current
内设置槽 (slot)。如果该槽中已存在数据,则将其重写。
id
- 槽的 id。
data
- 存储在槽中的数据,以 any 的形式存在。
InvalidSlot
- 如果 ID 定义的不是已分配的槽,则抛出此异常。
Current
boolean target_is_a(String id)
id
- 调用者将检验 servant 是否是此存储库 id。
void add_reply_service_context(ServiceContext service_context, boolean replace)
没有对服务上下文的顺序做出任何声明。它们可能按添加的顺序出现,也可能不是如此。
service_context
- 将添加到应答的
IOP.ServiceContext
。
replace
- 在已经存在具有给定 ID 的服务上下文时指示此操作的行为。如果为 false,则抛出
BAD_INV_ORDER
,并带有标准次要代码 15。如果为 true,则用新服务上下文取代现有的服务上下文。
BAD_INV_ORDER
- 如果 replace 为 false 且已经存在具有给定 ID 的服务上下文,则抛出此异常,并带有标准次代码 15。