public interface ServerRequestInfoOperations extends RequestInfoOperations
对一些属性和操作ServerRequestInfo
是不是在所有的拦截点有效。 下表显示每个属性或操作的有效性。 如果它无效,尝试访问它将导致BAD_INV_ORDER
被抛出与14的标准次要代码。
request_id
yes yes yes yes yesoperation
yes yes yes yes yesarguments
no yes1 yes no2 no2exceptions
no yes yes yes yescontexts
no yes yes yes yesoperation_context
no yes yes no noresult
no no yes no noresponse_expected
yes yes yes yes yessync_scope
yes yes yes yes yes request_id yes yes yes yes yes operation yes yes yes yes yes arguments no yes1 yes no2 no2 exceptions no yes yes yes yes contexts no yes yes yes yes operation_context no yes yes no no result no no yes no no response_expected yes yes yes yes yes sync_scope yes yes yes yes yes reply_status no no yes yes yes forward_reference no no no no yes2 get_slot yes yes yes yes yes get_request_service_context yes no yes yes yes get_reply_service_context no no yes yes yes ServerRequestInfo-specific: sending_exception no no no yes no object_id no yes yes yes3 yes3 adapter_id no yes yes yes3 yes3 server_id no yes yes yes yes orb_id no yes yes yes yes adapter_name no yes yes yes yes target_most_derived_interface no yes no4 no4 no4 get_server_policy yes yes yes yes yes set_slot yes yes yes yes yes target_is_a no yes no4 no4 no4 add_reply_service_context yes yes yes yes yesServerRequestInfo
传递给receive_request
时,每个参数的列表中都有一个条目,无论是在inout还是out中。 但是只有in和inout参数才可用。 reply_status
属性不是LOCATION_FORWARD
,访问此属性将抛出BAD_INV_ORDER
与标准的次要代码14。 NO_RESOURCES
与标准的次要代码1将被抛出,如果它不可用。 ServantLocator
,那么ORB将调用拦截点调用后ServantLocator.postinvoke()
ServerRequestInterceptor
Modifier and Type | Method and Description |
---|---|
byte[] |
adapter_id()
返回对象适配器的不透明标识符。
|
String[] |
adapter_name()
返回标识正在处理此请求的对象适配器实例的字符串序列。
|
void |
add_reply_service_context(ServiceContext service_context, boolean replace)
允许拦截器向请求添加服务上下文。
|
Policy |
get_server_policy(int type)
返回给定策略类型的此操作的有效策略。
|
byte[] |
object_id()
返回描述
object_id 调用目标的不透明的object_id。
|
String |
orb_id()
返回用于创建ORB的ID。
|
Any |
sending_exception()
返回任何包含要返回给客户端的异常。
|
String |
server_id()
返回使用-ORBServerId参数在ORB :: init上指定的服务器ID。
|
void |
set_slot(int id, Any data)
允许Interceptor在设置的槽
PortableInterceptor.Current 是在请求的范围。
|
boolean |
target_is_a(String id)
如果servant是给定的存储库id,则返回true,否则返回false。
|
String |
target_most_derived_interface()
返回servant最传导接口的存储库ID。
|
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()
如果异常是不能插入任何用户异常(例如,未知或绑定不提供TypeCode
),那么该属性将包含系统异常UNKNOWN
,其中标准的次要代码为1 。
byte[] object_id()
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.PolicyType
。
CORBA.Policy
。
INV_POLICY
- 抛出,标准的次要代码为2,如果给定类型的策略未通过
register_policy_factory
。
ORBInitInfoOperations.register_policy_factory(int, org.omg.PortableInterceptor.PolicyFactory)
void set_slot(int id, Any data) throws InvalidSlot
PortableInterceptor.Current
是在请求的范围。
如果该插槽中已经存在数据,它将被覆盖。
id
- 插槽的ID。
data
- 以任何形式存储在该插槽中的数据。
InvalidSlot
- 如果ID未定义分配的插槽,则抛出。
Current
boolean target_is_a(String id)
id
- 调用者想知道仆人是否是这个存储库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
- 抛出,标准的次要代码为15,如果replace为false,并且服务上下文已经存在与给定的ID。