Класс ServerRequest
- java.lang.Object
-
- org.omg.CORBA.ServerRequest
public abstract class ServerRequest extends Object
Объект, который захватывает явное состояние запроса для интерфейса динамического скелета (DSI). Этот класс, краеугольный камень DSI, аналогичен объекту Request в DII.
ORB отвечает за создание этого воплощения запроса и доставку его в динамическую реализующую процедуру (DIR). Динамический слуга (DIR) создаётся путём реализации класса DynamicImplementation, который имеет единственный метод invoke. Этот метод принимает объект ServerRequest. Абстрактный класс ServerRequest определяет методы для доступа к имени метода, аргументам и контексту запроса, а также методы для установки результата запроса либо как возвращаемое значение, либо как исключение.
Суть доступа к аргументам запроса заключается в том, что DIR должен предоставить информацию о типе ожидаемых аргументов, так как нет скомпилированной информации об этом. Эта информация предоставляется через NVList, который представляет собой список объектов NamedValue. Каждый объект NamedValue содержит объект Any, который в свою очередь содержит объект TypeCode, представляющий тип аргумента.
Аналогично, информация о типе необходима для ответа, как для ожидаемого результата, так и для исключения, поэтому методы result и except принимают объект Any в качестве параметра.
- См. также:
-
DynamicImplementation,NVList,NamedValue
Конструкторы
| Конструктор и описание |
|---|
ServerRequest() |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
arguments(NVList args) Указывает типы параметров метода и извлекает значения аргументов «вход» и «вход-выход». |
abstract Context |
ctx() Возвращает информацию о контексте, указанную в IDL для операции, когда операция не является доступом к атрибуту и определение IDL операции содержит выражение контекста; в противном случае возвращает ссылку nil |
void |
except(Any any) Устарело. используйте set_exception() |
String |
op_name() Устарело. используйте operation() |
String |
operation() Выбрасывает исключение |
void |
params(NVList params) Устарело. используйте метод |
void |
result(Any any) Устарело. используйте метод |
void |
set_exception(Any any) Выбрасывает исключение |
void |
set_result(Any any) Выбрасывает исключение |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
ServerRequest
public ServerRequest()
Методы
op_name
@Deprecated public String op_name()
Устаревшее. Используйте operation()
Возвращает имя вызываемой операции. Согласно правилам OMG IDL, эти имена должны быть уникальными среди всех операций, поддерживаемых интерфейсом этого объекта «наиболее производного» уровня. Обратите внимание, что имена операций для получения и установки атрибутов соответственно равны _get_<attribute_name> и _set_<attribute_name>.
- Возвращает:
- имя вызываемой операции
operation
public String operation()
Выбрасывает исключение org.omg.CORBA.NO_IMPLEMENT.
Возвращает имя вызываемой операции. Согласно правилам OMG IDL, эти имена должны быть уникальными среди всех операций, поддерживаемых интерфейсом этого объекта «наиболее производного» уровня. Обратите внимание, что имена операций для получения и установки атрибутов соответственно равны _get_<attribute_name> и _set_<attribute_name>.
- Возвращает:
- имя вызываемой операции
- См. также:
CORBAкомментарии к пакету для нереализованных функций
params
@Deprecated public void params(NVList params)
Устаревшее. Используйте метод arguments
Определяет типы параметров метода и получает значения аргументов «in» и «inout».
Обратите внимание, что этот метод устарел; используйте метод arguments вместо него.
Если не вызывается метод set_exception, DIR должен вызвать этот метод ровно один раз, даже если сигнатура метода не содержит параметров. После вызова методов
arguments или set_exception, вызов arguments на том же объекте ServerRequest приведет к возникновению системного исключения BAD_INV_ORDER. DIR должен передать методу arguments объект NVList, инициализированный TypeCodes и флагами, описывающими типы параметров операции в порядке их появления в спецификации IDL (слева направо). Потенциально другой объект NVList будет возвращен методом arguments, с предоставленными значениями аргументов «in» и «inout». Если не вызывается метод set_exception, DIR должен заполнить возвращённый объект NVList значениями для аргументов «out» перед возвратом, и может также изменить возвращаемые значения для аргументов «inout».
- Параметры:
-
params- аргументы метода в виде объектаNVList
arguments
public void arguments(NVList args)
Определяет типы параметров метода и получает значения аргументов «in» и «inout». Если не вызывается метод set_exception, DIR должен вызвать этот метод ровно один раз, даже если сигнатура метода не содержит параметров. После вызова методов
arguments или set_exception, вызов arguments на том же объекте ServerRequest приведет к возникновению системного исключения BAD_INV_ORDER. DIR должен передать методу arguments объект NVList, инициализированный TypeCodes и флагами, описывающими типы параметров операции в порядке их появления в спецификации IDL (слева направо). Потенциально другой объект NVList будет возвращен методом arguments, с предоставленными значениями аргументов «in» и «inout». Если не вызывается метод set_exception, DIR должен заполнить возвращённый объект NVList значениями для аргументов «out» перед возвратом, и может также изменить возвращаемые значения для аргументов «inout».
- Параметры:
-
args- аргументы метода в виде NVList - См. также:
CORBAкомментарии к пакету для нереализованных функций
result
@Deprecated public void result(Any any)
Устаревшее. Используйте метод set_result
Определяет любое возвращаемое значение вызова.
Обратите внимание, что этот метод устарел; используйте метод set_result вместо него.
Если не вызывается метод set_exception, если вызываемый метод имеет тип результата, отличный от void, метод set_result должен быть вызван ровно один раз перед возвратом DIR. Если операция имеет тип результата void, метод set_result может быть вызван один раз с объектом Any, тип которого tk_void. Вызов метода set_result до вызова метода arguments или после вызова методов set_result или set_exception приведет к исключению BAD_INV_ORDER. Вызов метода set_result без предварительного вызова метода ctx, когда операция IDL содержит выражение контекста или когда NVList, переданный в аргументы, не описывал все параметры, переданные клиентом, может привести к системному исключению MARSHAL.
- Параметры:
-
any- объектAny, содержащий возвращаемое значение
set_result
public void set_result(Any any)
Выбрасывает исключение org.omg.CORBA.NO_IMPLEMENT.
Определяет любое возвращаемое значение вызова. Если не вызывается метод set_exception, если вызываемый метод имеет тип результата, отличный от void, метод set_result должен быть вызван ровно один раз перед возвратом DIR. Если операция имеет тип результата void, метод set_result может быть вызван один раз с объектом Any, тип которого tk_void. Вызов метода set_result до вызова метода arguments или после вызова методов set_result или set_exception приведет к исключению BAD_INV_ORDER. Вызов метода set_result без предварительного вызова метода ctx, когда операция IDL содержит выражение контекста или когда NVList, переданный в аргументы, не описывал все параметры, переданные клиентом, может привести к системному исключению MARSHAL.
- Параметры:
-
any- объектAny, содержащий возвращаемое значение - См. также:
CORBAкомментарии к пакету для нереализованных функций
except
@Deprecated public void except(Any any)
Устаревшее. Используйте set_exception()
DIR может вызвать set_exception в любое время, чтобы вернуть исключение клиенту. Any, переданный в set_exception, должен содержать либо системное исключение, либо пользовательское исключение, указанное в выражении raises вызываемой операции IDL. Передача Any, не содержащего исключения, приведет к системному исключению BAD_PARAM. Передача не указанного пользовательского исключения приведет к тому, что DIR получит системное исключение BAD_PARAM или клиент получит системное исключение UNKNOWN_EXCEPTION.
- Параметры:
-
any- объектAny, содержащий исключение
set_exception
public void set_exception(Any any)
Выбрасывает исключение org.omg.CORBA.NO_IMPLEMENT.
Возвращает заданное исключение клиенту. Этот метод вызывается DIR, который может вызвать его в любое время. Объект Any, переданный в этот метод, должен содержать либо системное исключение, либо одно из пользовательских исключений, указанных в определении IDL вызываемой операции. Передача объекта Any, не содержащего исключения, вызовет системное исключение BAD_PARAM. Передача не указанного пользовательского исключения приведет к тому, что DIR получит системное исключение BAD_PARAM или клиент получит системное исключение UNKNOWN_EXCEPTION.
- Параметры:
-
any- объектAny, содержащий исключение - Выбрасывает:
-
BAD_PARAM- если переданный объектAnyне содержит исключение или исключение не указано -
UNKNOWN_EXCEPTION- если переданное исключение является не указанным пользовательским исключением, и DIR не получил исключения BAD_PARAM - См. также:
CORBAкомментарии к пакету для нереализованных функций
ctx
public abstract Context ctx()
Возвращает информацию о контексте, указанную в IDL для операции, когда операция не является доступом к атрибуту и определение операции IDL содержит выражение контекста; в противном случае возвращает нулевую ссылку Context. Вызов метода ctx до вызова метода arguments или после вызова методов ctx, set_result, или set_exception приведет к возникновению системного исключения BAD_INV_ORDER.
- Возвращает:
- объект контекста, который будет использоваться для разрешения любых строк контекста, значения которых необходимо отправить с вызовом.
- Выбрасывает:
-
BAD_INV_ORDER- если (1) методctxвызывается до методаargumentsили (2) методctxвызывается после вызоваset_resultилиset_exception
© 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.