Пакет org.omg.CosNaming
Обеспечивает службу именования для Java IDL.
См.: Описание
| Интерфейс | Описание |
|---|---|
| BindingIterator | Интерфейс BindingIterator позволяет клиенту итерировать по связям, используя операции next_one или next_n. |
| BindingIteratorOperations | Интерфейс BindingIterator позволяет клиенту итерировать по связям, используя операции next_one или next_n. |
| NamingContext | Контекст именования — это объект, содержащий набор связей имен, в котором каждое имя уникально. |
| NamingContextExt |
|
| NamingContextExtOperations |
|
| NamingContextOperations | Контекст именования — это объект, содержащий набор связей имен, в котором каждое имя уникально. |
| Класс | Описание |
|---|---|
| _BindingIteratorImplBase | |
| _BindingIteratorStub | Интерфейс BindingIterator позволяет клиенту итерировать по связям, используя операции next_one или next_n. |
| _NamingContextExtStub |
|
| _NamingContextImplBase | |
| _NamingContextStub | Контекст именования — это объект, содержащий набор связей имен, в котором каждое имя уникально. |
| Binding | org/omg/CosNaming/Binding.java . |
| BindingHelper | org/omg/CosNaming/BindingHelper.java . |
| BindingHolder | org/omg/CosNaming/BindingHolder.java . |
| BindingIteratorHelper | Интерфейс BindingIterator позволяет клиенту итерировать по связям, используя операции next_one или next_n. |
| BindingIteratorHolder | Интерфейс BindingIterator позволяет клиенту итерировать по связям, используя операции next_one или next_n. |
| BindingIteratorPOA | Интерфейс BindingIterator позволяет клиенту итерировать по связям, используя операции next_one или next_n. |
| BindingListHelper | Список связей. |
| BindingListHolder | Список связей. |
| BindingType | Указывает, относится ли данная связь к объекту (не являющемуся контекстом именования) или к контексту именования. |
| BindingTypeHelper | Указывает, относится ли данная связь к объекту (не являющемуся контекстом именования) или к контексту именования. |
| BindingTypeHolder | Указывает, относится ли данная связь к объекту (не являющемуся контекстом именования) или к контексту именования. |
| IstringHelper | org/omg/CosNaming/IstringHelper.java . |
| NameComponent | org/omg/CosNaming/NameComponent.java . |
| NameComponentHelper | org/omg/CosNaming/NameComponentHelper.java . |
| NameComponentHolder | org/omg/CosNaming/NameComponentHolder.java . |
| NameHelper | Имя — это последовательность компонентов имени. |
| NameHolder | Имя — это последовательность компонентов имени. |
| NamingContextExtHelper |
|
| NamingContextExtHolder |
|
| NamingContextExtPOA |
|
| NamingContextHelper | Контекст именования — это объект, содержащий набор связей имен, в котором каждое имя уникально. |
| NamingContextHolder | Контекст именования — это объект, содержащий набор связей имен, в котором каждое имя уникально. |
| NamingContextPOA | Контекст именования — это объект, содержащий набор связей имен, в котором каждое имя уникально. |
Описание пакета org.omg.CosNaming
Предоставляет службу именования для Java IDL. Объектный запрос брокер демона (ORBD) также включает в себя службу именования как транзиентного, так и постоянного типа.
Пакет и все его классы и интерфейсы были сгенерированы с помощью инструмента idlj по файлу nameservice.idl, который является модулем, написанным на OMG IDL.
Спецификация пакета
Для точного списка поддерживаемых разделов официальных спецификаций, с которыми соответствует Java[tm] Platform, Standard Edition 6, ORB, см. Официальные спецификации поддержки CORBA в Java[tm] SE 6.
Интерфейсы
Пакетorg.omg.CosNaming содержит два публичных интерфейса и несколько вспомогательных классов. Интерфейсы следующие:
-
NamingContext -
BindingIterator
Эти два интерфейса предоставляют средства для связывания/развязывания имен и ссылок на объекты, для получения связанных ссылок на объекты и для итерации по списку связей. Интерфейс NamingContext предоставляет основную функциональность службы именования, а интерфейс BindingIterator предоставляет способ итерации по списку связей имя/ссылка на объект.
Вспомогательные классы
Для сопоставления интерфейса OMG IDL с языком программирования Java компилятор idlj создаёт Java-классы, которые можно рассматривать как вспомогательные классы. Комментарии к сгенерированным вспомогательным классам, используемым интерфейсамиNamingContext и BindingIterator, включены здесь.
Классы, используемые NamingContext и BindingIterator
Ниже приведены классы, используемые службой именования. (Вспомогательные и holder-классы, которые генерируются для каждого из перечисленных здесь классов, обсуждаются ниже.) -
public final class NameComponent— строительный блок для имён. (Имена связаны со ссылками на объекты в контексте именования.)Имя представляет собой массив из одного или более
NameComponentобъектов. Имя с однимNameComponentназывается простым именем; имя с несколькимиNameComponentобъектами называется составным именем.NameComponentобъект состоит из двух полей:-
id—Stringиспользуемый в качестве идентификатора -
kind—String, который может использоваться для любых описательных целей. Его важность заключается в том, что он может использоваться для описания объекта без влияния на синтаксис. Например, язык программирования C использует синтаксическую соглашение добавления расширения ".c" к имени файла для обозначения того, что это файл исходного кода. ВNameComponentобъекте полеkindможет использоваться для описания типа объекта, а не расширения файла или какой-либо другой синтаксической соглашения. Примеры значений поляkindвключают строки"c_source","object_code","executable","postscript", и"". Не является необычным, если полеkindпустая строка.
В имени каждый
NameComponentобъект, кроме последнего, обозначаетNamingContextобъект; последнийNameComponentобъект обозначает связанную ссылку на объект. Это похоже на имя пути, в котором последнее имя — имя файла, а все имена перед ним — имена каталогов. -
-
public final class Binding— объект, который связывает имя с ссылкой на объект или контекстом именования. ОбъектBindingимеет два поля:-
binding_name- массив из одного или болееNameComponentобъектов, представляющий связанное имя -
binding_type-BindingTypeобъект, указывающий, является ли связь между именем и ссылкой на объект или между именем и контекстом именования
Интерфейс
NamingContextимеет методы для связывания/развязывания имён со ссылками на объекты или контекстами именования, для перечисления связей и для разрешения связей (при заданном имени методresolveвозвращает связанную с ним ссылку на объект). -
-
public final class BindingType— объект, определяющий, является ли данныйBindingобъект связью между именем и ссылкой на объект (то есть, не является контекстом именования) или между именем и контекстом именования.Класс
BindingTypeсостоит из двух методов и четырёх констант. Две из этих констант являютсяBindingTypeобъектами, а две —int.BindingTypeобъекты могут быть переданы в конструктор классаBindingили использованы в качестве параметров или возвращаемых значений. ЭтиBindingTypeобъекты:-
public static final BindingType nobject— для указания того, что связь осуществляется с ссылкой на объект -
public static final BindingType ncontext— для указания того, что связь осуществляется с контекстом именования
intконстанты могут быть переданы в методfrom_intдля созданияBindingTypeобъектов, или они могут быть возвращаемыми значениями для методаvalue. Эти константы:-
public static final int _nobject -
public static final int _ncontext
from_intпередано значение, отличное от_nobjectили_ncontext, он выбросит исключениеorg.omg.CORBA.BAD_PARAM.Использование:
BindingType btObject = from_int(_nobject); BindingType btContext = from_int(_ncontext);ПеременнаяbtObjectссылается на объектBindingType, инициализированный для представления связи с ссылкой на объект. ПеременнаяbtContextссылается на объектBindingType, инициализированный для представления связи с объектомNamingContex.Метод
valueвозвращает либо_nobject, либо_ncontext, поэтому в следующей строке кода переменнаяbtбудет содержать_nobjectили_ncontext:int bt = BindingType.value();
-
Классы-держатели
OMG IDL использует параметры OUT и INOUT для возвращения значений из операций. Сопоставление с языком программирования Java, в котором нет параметров OUT и INOUT, создаёт специальный класс для каждого типа, называемый классом-держателем. Экземпляр класса-держателя можно передать в метод Java в качестве параметра, и значение можно присвоить его полюvalue. Это позволяет ему выполнять функцию параметра OUT или INOUT. Для пакета org.omg.CosNaming сгенерированы следующие классы-держатели:
-
NamingContextHolder -
BindingIteratorHolder -
BindingHolder -
BindingListHolder -
BindingTypeHolder -
NameComponentHolder -
NameHolder
Обратите внимание, что в пакете org.omg.CORBA существует класс-держатель для каждого из основных типов Java: IntHolder, ShortHolder, StringHolder, и так далее.
Обратите также внимание, что существует класс NameHolder, хотя нет класса Name; аналогично, есть класс BindingListHolder, хотя нет класса BindingList. Это верно, потому что в интерфейсе OMG IDL Name и BindingList являются typedef. Нет сопоставления от IDL typedef к конструкции Java, но классы-держатели генерируются, если typedef относится к последовательности или массиву. В соответствии с языком программирования Java, Name является массивом из NameComponent объектов, а BindingList — массивом из Binding объектов. Все классы-держатели имеют как минимум два конструктора и одно поле:
-
поле
value— экземпляр типа, используемого в качестве параметра OUT или INOUT. Например, полеvalueобъектаNamingContextHolderбудет объектомNamingContext. - конструктор по умолчанию — конструктор, который создаёт новый объект-держатель, инициализированный значением по умолчанию для типа. Например, новый объект
BindingHolder, созданный с помощью конструктора по умолчанию, будет иметь своё полеvalueустановленным в значениеnull, так как это значение по умолчанию для объекта. Другие значения по умолчанию:falseдляboolean,0для числовых и символьных типов иnullдля ссылок на объекты. - конструктор из экземпляра — конструктор, который создаёт новый объект-держатель, поле
valueкоторого инициализируется переданным экземпляром
Класс-держатель для пользовательского типа (класса Java) имеет ещё три метода, но разработчики приложений не используют их напрямую.
Вспомогательные классы
Вспомогательные классы, сгенерированные для всех пользовательских типов в OMG IDL-интерфейсе, предоставляют статические методы для работы с этими типами.Только один метод в классе-помощнике используется программистом приложения: метод narrow. Только Java-интерфейсы, сопоставленные с IDL-интерфейсами, будут иметь класс-помощник, содержащий метод narrow, поэтому в пакете CosNaming только классы NamingContextHelper и BindingIteratorHelper имеют метод narrow.
-
public static NamingContext narrow(org.omg.CORBA.Object obj)— преобразует данный объект CORBA в объектNamingContext -
public static BindingIterator narrow(org.omg.CORBA.Object obj)— преобразует данный объект CORBA в объектBindingIterator
Пакет org.omg.CosNaming.NamingContextPackage
Этот пакет предоставляет классы-помощники и классы-держатели для исключений, используемых в пакете org.omg.CosNaming, а также для класса NotFoundReason, который предоставляет причину исключения NotFound. Существуют классы-помощники и классы-держатели для следующих исключений:
-
AlreadyBound -
CannotProceed -
InvalidName -
NotEmpty -
NotFound
Совместимость службы именования
Реализация Sun пакетаCosNaming соответствует спецификации OMG COSNaming. Другими словами, API в службе именования Sun реализованы в соответствии с рекомендациями для службы именования, предоставленными OMG. Следовательно, если сторонний поставщик реализовал службу именования, которая соответствует OMG, то возможно переключение между реализацией службы именования Sun CosNaming и реализацией стороннего поставщика. Однако важно понимать, что могут быть небольшие различия в способе реализации службы именования разными поставщиками, например, различия в строках исключений. Инструкции по использованию службы именования стороннего поставщика
Хотя мы рекомендуем использовать ORB и услуги ORB от одного поставщика, возможно подключение реализации службы именованияCOSNaming стороннего поставщика к ORB Sun RMI-IIOP. Вот шаги, которые необходимо выполнить:- Создайте файл свойств для сервера Bootstrap и добавьте в него две записи. Например, вы можете назвать этот файл
/tmp/servicesи поместить в него следующее:NameService, <Stringified IOR of the Root Naming Context>.Это связывает
NameServiceс корневым контекстом именования реализацииCosNaming, которую вы хотите использовать. - Запустите автономный сервер Bootstrap, используя следующую команду:
java -classpath $(CLASSPATH) com.sun.corba.ee.internal.CosNaming.BootstrapServer -InitialServicesFile "/tmp/services" [-ORBInitialPort port]Обратите внимание, что квадратные скобки в конце команды означают, что указание номера порта является необязательным.
Теперь, когда приложение вызывает метод org.omg.CORBA.ORB.resolve_initial_references, процессы CORBA будут обращаться к серверу Bootstrap, чтобы получить корневой контекст именования.
- С момента:
- JDK1.3
© 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.