Интерфейс ServerRequestInfoOperations
- Все суперинтерфейсы:
- RequestInfoOperations
- Все известные подинтерфейсы:
- ServerRequestInfo
public interface ServerRequestInfoOperations extends RequestInfoOperations
Информация о запросе, доступная для серверных обработчиков запросов.
Некоторые атрибуты и операции над 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, в списке есть запись для каждого аргумента, будь то входной, входно-выходной или выходной. Но доступны только входные и входно-выходные аргументы. - Если атрибут
reply_statusнеLOCATION_FORWARD, доступ к этому атрибуту вызоветBAD_INV_ORDERсо стандартным кодом ошибки 14. - Если локатор серванта вызвал переадресацию или выбросил исключение, этот атрибут/операция может быть недоступен в этой точке перехвата. Будет выброшено
NO_RESOURCESсо стандартным кодом ошибки 1, если он недоступен. - Операция недоступна в данной точке перехвата, потому что необходимая информация требует доступа к серванту целевого объекта, который может быть больше недоступен для ORB. Например, если адаптер объекта — это POA, который использует
ServantLocator, ORB вызывает точку перехвата после вызоваServantLocator.postinvoke().
- См. также:
ServerRequestInterceptor
Методы
| Модификатор и тип | Метод и описание |
|---|---|
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() Возвращает непрозрачный |
String |
orb_id() Возвращает идентификатор, использованный для создания ORB. |
Any |
sending_exception() Возвращает любую переменную, содержащую исключение, которое должно быть возвращено клиенту. |
String |
server_id() Возвращает идентификатор сервера, указанный в ORB::init с аргументом -ORBServerId. |
void |
set_slot(int id,
Any data) Позволяет обработчику установить слот в |
boolean |
target_is_a(String id) Возвращает true, если сервант — это данный идентификатор хранилища, false — в противном случае. |
String |
target_most_derived_interface() Возвращает идентификатор хранилища для наиболее производного интерфейса серванта. |
Методы, унаследованные от интерфейса 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()
Возвращает любой, содержащий исключение, которое должно быть возвращено клиенту.
Если исключение является исключением пользователя, которое нельзя вставить в любой (например, оно неизвестно или привязки не предоставляют TypeCode), то этот атрибут будет любым, содержащим системное исключение UNKNOWN со стандартным кодом ошибки 1.
object_id
byte[] object_id()
Возвращает непрозрачный object_id, описывающий цель вызова операции.
adapter_id
byte[] adapter_id()
Возвращает непрозрачный идентификатор адаптера объектов.
server_id
String server_id()
Возвращает идентификатор сервера, указанный при ORB::init с помощью аргумента -ORBServerId.
orb_id
String orb_id()
Возвращает идентификатор, используемый для создания ORB.
adapter_name
String[] adapter_name()
Возвращает последовательность строк, идентифицирующих экземпляр адаптера объектов, обрабатывающий этот запрос.
target_most_derived_interface
String target_most_derived_interface()
Возвращает идентификатор репозитория для самого производного интерфейса слуги.
get_server_policy
Policy get_server_policy(int type)
Возвращает политику, действующую для этой операции для данного типа политики. Возвращаемый CORBA.Policy объект должен быть только политикой, тип которой был зарегистрирован с помощью register_policy_factory.
- Параметры:
-
type-CORBA.PolicyType, указывающий политику, которая должна быть возвращена. - Возвращает:
- Полученную
CORBA.Policyс заданным типом политики. - Исключения:
-
INV_POLICY- выбрасывается со стандартным кодом ошибки 2, если политика для заданного типа не была зарегистрирована с помощьюregister_policy_factory. - См. также:
ORBInitInfoOperations.register_policy_factory(int, org.omg.PortableInterceptor.PolicyFactory)
set_slot
void set_slot(int id,
Any data)
throws InvalidSlot Позволяет интерцептору установить слот в PortableInterceptor.Current, который находится в области запроса. Если данные уже существуют в этом слоте, они будут перезаписаны.
- Параметры:
-
id- Идентификатор слота. -
data- Данные в виде любого, которые необходимо сохранить в этом слоте. - Исключения:
-
InvalidSlot- выбрасывается, если идентификатор не определяет выделенный слот. - См. также:
Current
target_is_a
boolean target_is_a(String id)
Возвращает true, если слуга имеет заданный идентификатор репозитория, и false, если нет.
- Параметры:
-
id- Вызывающий хочет узнать, является ли слуга этим идентификатором репозитория. - Возвращает:
- Является ли слуга заданным идентификатором репозитория?
add_reply_service_context
void add_reply_service_context(ServiceContext service_context,
boolean replace) Позволяет интерцепторам добавлять контексты служб в запрос.
Порядок контекстов служб не объявлен. Они могут или не могут появляться в порядке их добавления.
- Параметры:
-
service_context-IOP.ServiceContextдля добавления в ответ. -
replace- Указывает поведение этой операции, когда контекст службы уже существует с заданным идентификатором. Если false, тоBAD_INV_ORDERс стандартным кодом ошибки 15 выбрасывается. Если true, то существующий контекст службы заменяется новым. - Исключения:
-
BAD_INV_ORDER- выбрасывается со стандартным кодом ошибки 15, если replace равно false, а контекст службы уже существует с заданным идентификатором.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.