org.omg.PortableInterceptor

接口
异常
所有超级接口:
RequestInfoOperations
所有已知子接口:
ServerRequestInfo

public interface ServerRequestInfoOperations
     
extends RequestInfoOperations

服务器端请求 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
  1. ServerRequestInfo 传递给 receive_request 时,对于每个参数(无论它是 in、inout 还是 out),列表中都有一个对应的条目。但只有 in 和 inout 参数可用。
  2. 如果 reply_status 属性不是 LOCATION_FORWARD,则访问此属性将抛出 BAD_INV_ORDER,并带有标准次要代码 14。
  3. 如果 servant 定位器导致位置转发或抛出异常,则此属性/操作在此截取点不可用。如果不可用,则抛出 NO_RESOURCES,并带有标准次要代码 1。
  4. 该操作在此截取点不可用,因为必要信息要求访问目标对象的 servant,而该 servant 对于 ORB 已经不可用。例如,如果对象适配器为使用 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
 

方法详细信息

sending_exception

Any sending_exception()
返回一个 any,它包含将向客户端返回的异常。

如果异常是不能插入 any 的用户异常(例如,该异常是未知的或绑定不提供 TypeCode),则此属性将是一个包含系统异常 UNKNOWN 并带有标准次要代码 1 的 any。

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

object_id

byte[] object_id()
返回描述该操作调用目标的不透明 object_id


adapter_id

byte[] adapter_id()
返回对象适配器的不透明标识符。


server_id

String server_id()
返回使用 -ORBServerId 参数的 ORB::init 上指定的服务器 ID。


orb_id

String orb_id()
返回用于创建 ORB 的 ID。


adapter_name

String[] adapter_name()
返回字符串序列,这些字符串标识正处理此请求的对象适配器实例。


target_most_derived_interface

String target_most_derived_interface()
返回 servant 最终派生接口的存储库 id。


get_server_policy

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)

set_slot

void set_slot(int id,
              Any data)
              throws InvalidSlot
允许 Interceptor 在请求域中的 PortableInterceptor.Current 内设置槽 (slot)。如果该槽中已存在数据,则将其重写。

参数:
id - 槽的 id。
data - 存储在槽中的数据,以 any 的形式存在。
抛出:
InvalidSlot - 如果 ID 定义的不是已分配的槽,则抛出此异常。
另请参见:
Current

target_is_a

boolean target_is_a(String id)
如果 servant 是给定的存储库 id,则返回 true;若不是则返回 false。

参数:
id - 调用者将检验 servant 是否是此存储库 id。
返回:
servant 是否是给定的 RepositoryId。

add_reply_service_context

void add_reply_service_context(ServiceContext service_context,
                               boolean replace)
允许 Interceptor 将服务上下文添加到请求。

没有对服务上下文的顺序做出任何声明。它们可能按添加的顺序出现,也可能不是如此。

参数:
service_context - 将添加到应答的 IOP.ServiceContext
replace - 在已经存在具有给定 ID 的服务上下文时指示此操作的行为。如果为 false,则抛出 BAD_INV_ORDER,并带有标准次要代码 15。如果为 true,则用新服务上下文取代现有的服务上下文。
抛出:
BAD_INV_ORDER - 如果 replace 为 false 且已经存在具有给定 ID 的服务上下文,则抛出此异常,并带有标准次代码 15。