Интерфейс ObjectFactory
- Все известные подинтерфейсы:
- DirObjectFactory
public interface ObjectFactory
Этот интерфейс представляет фабрику для создания объекта.
Фреймворк JNDI позволяет динамически загружать реализации объектов через фабрики объектов. Например, при поиске принтера, связанного в пространстве имен, если служба печати связывает имена принтеров с ссылками, ссылка на принтер может быть использована для создания объекта принтера, чтобы вызывающий метод lookup мог напрямую работать с объектом принтера после поиска.
Фабрика ObjectFactory отвечает за создание объектов определенного типа. В приведенном выше примере у вас может быть PrinterObjectFactory для создания объектов Printer.
Фабрика объектов должна реализовывать интерфейс ObjectFactory. Кроме того, класс фабрики должен быть public и иметь public конструктор без параметров.
Метод getObjectInstance() фабрики объектов может вызываться многократно, возможно, с использованием разных параметров. Реализация потокобезопасна.
Упоминание URL в документации для этого класса относится к строке URL, как определено в RFC 1738 и связанных RFC. Это любая строка, которая соответствует синтаксису, описанному в них, и может не всегда иметь соответствующую поддержку в классе java.net.URL или веб-браузерах.
- С:
- 1.3
- См. также:
-
NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>),NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>),ObjectFactoryBuilder,StateFactory
Методы
| Модификатор и тип | Метод и описание |
|---|---|
Object |
getObjectInstance(Object obj,
Name name,
Context nameCtx,
Hashtable<?,?> environment) Создает объект, используя указанную информацию о расположении или ссылке. |
Методы
getObjectInstance
Object getObjectInstance(Object obj,
Name name,
Context nameCtx,
Hashtable<?,?> environment)
throws Exception Создает объект, используя указанную информацию о расположении или ссылке.
Специальные требования к этому объекту предоставляются с помощью environment. Примером такой свойства среды является информация об идентификации пользователя.
NamingManager.getObjectInstance() последовательно загружает фабрики объектов и вызывает этот метод у них, пока один из них не вернет не null ответ. Когда исключение выбрасывается фабрикой объектов, исключение передается вызывающему методу NamingManager.getObjectInstance() (и не производится поиск других фабрик, которые могут вернуть не null ответ). Фабрика объектов должна выбрасывать исключение только если она уверена, что является единственной целевой фабрикой и что другие фабрики объектов не должны быть проверены. Если эта фабрика не может создать объект, используя предоставленные аргументы, она должна вернуть null.
Фабрика контекста URL — это специальная фабрика объектов, которая создает контексты для разрешения URL-адресов или объектов, чьи местоположения заданы URL-адресами. Метод getObjectInstance() фабрики контекста URL будет подчиняться следующим правилам.
- Если
objравно null, создается контекст для разрешения URL-адресов схемы, связанной с этой фабрикой. Результирующий контекст не привязан к конкретному URL-адресу: он может обрабатывать произвольные URL-адреса с идентификатором схемы этой фабрики. Например, вызовgetObjectInstance()сobj, установленным в null для фабрики контекста LDAP URL, вернет контекст, который может разрешать URL-адреса LDAP, такие как "ldap://ldap.wiz.com/o=wiz,c=us" и "ldap://ldap.umich.edu/o=umich,c=us". - Если
objявляется строкой URL, создается объект (обычно контекст), идентифицированный URL-адресом. Например, предположим, что это фабрика контекста LDAP URL. Еслиobjравно "ldap://ldap.wiz.com/o=wiz,c=us", getObjectInstance() вернет контекст, именованный по имени DN "o=wiz, c=us" на LDAP-сервере ldap.wiz.com. Этот контекст затем может использоваться для разрешения LDAP имен (таких как "cn=George") относительно этого контекста. - Если
objпредставляет собой массив строк URL, предполагается, что URL-адреса эквивалентны в терминах контекста, к которому они относятся. Проверка того, являются ли URL-адреса эквивалентными или нуждаются в эквивалентности, зависит от реализации фабрики контекста. Порядок URL-адресов в массиве несущественен. Возвращаемый объектом getObjectInstance() объект аналогичен случаю с одним URL-адресом. Это объект, названный URL-адресами. - Если
objявляется каким-либо другим типом, поведениеgetObjectInstance()определяется реализацией фабрики контекста.
Параметры name и environment принадлежат вызывающему методу. Реализация не будет модифицировать эти объекты или сохранять ссылки на них, хотя она может сохранять ссылки на клоны или копии.
Параметры имени и контекста. Параметры name и nameCtx могут быть использованы для указания имени создаваемого объекта. name — это имя объекта относительно контекста nameCtx. Если существует несколько возможных контекстов, из которых можно назвать объект (что часто бывает), вызывающий метод должен выбрать один. Хорошим правилом является выбор "наиболее глубокого" доступного контекста. Если nameCtx равно null, name относитсья к умолчанию initial context. Если имя не указывается, параметр name должен быть null. Если фабрика использует nameCtx, она должна синхронизировать свой доступ с учетом одновременного доступа, так как реализации контекста не гарантируют потокобезопасность.
- Параметры:
-
obj- Возможный null-объект, содержащий информацию о расположении или ссылке, которая может быть использована при создании объекта. -
name- Имя этого объекта относительноnameCtx, или null, если имя не указано. -
nameCtx- Контекст, относительно которого указан параметрname, или null, еслиnameотносится к умолчанию initial context. -
environment- Возможный null-объект среды, используемый при создании объекта. - Возвращает:
- Созданный объект; null, если объект не может быть создан.
- Выбрасывает:
-
Exception- если эта фабрика объектов столкнулась с исключением при попытке создания объекта, и другие фабрики объектов не должны быть проверены. - См. также:
-
NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>),NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
© 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.