Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface ObjectFactory
Платформа JNDI учитывает объектные реализации, которые будут загружены в динамически через объектные фабрики. Например, ища принтер, связанный в пространстве имен, если служба печати связывает имена принтера к Ссылкам, Ссылка принтера могла бы использоваться, чтобы создать объект принтера, так, чтобы вызывающая сторона поиска могла непосредственно работать на объекте принтера после поиска.
ObjectFactory ответственен за создание объектов определенного типа. В вышеупомянутом примере у Вас может быть PrinterObjectFactory для того, чтобы создать объекты Принтера.
Объектная фабрика должна реализовать интерфейс ObjectFactory. Кроме того, класс фабрики должен быть общедоступным и должен иметь общедоступного конструктора, который не принимает параметров.
Метод getObjectInstance() объектной фабрики может быть вызван многократно, возможно используя различные параметры. Реализация ориентирована на многопотоковое исполнение.
Упоминание о URL в документации для этого класса обращается к строке URL как определено RFC 1738 и его связанным RFCs. Именно любая строка соответствует синтаксису, описанному там, и, возможно, не всегда имеет соответствующей поддержки в java.net. Средства просмотра классов URL или Веб-браузеры.
Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment) throws Exception
Особые требования этого объекта предоставляются, используя environment
. Примером такого свойства среды является пользовательская информация об идентификационных данных.
NamingManager.getObjectInstance() последовательно загружается на объектных фабриках и вызывает этот метод на них, пока каждый не производит ненулевой ответ. Когда исключение выдается объектной фабрикой, исключение передается вызывающей стороне NamingManager.getObjectInstance() (и никакой поиск не делается для других фабрик, которые могут произвести ненулевой ответ). Объектная фабрика должна только выдать исключение, если это уверено, что это - единственная намеченная фабрика и что никакие другие объектные фабрики нельзя попробовать. Если эта фабрика не может создать объект, используя предоставленные параметры, она должна возвратить нуль.
Фабрикой контекста URL является специальный ObjectFactory, который создает контексты для того, чтобы разрешить URL или объекты, расположения которых определяются URL. Метод getObjectInstance() фабрики контекста URL повинуется следующим правилам.
obj
нуль, создайте контекст для того, чтобы разрешить URL схемы, связанной с этой фабрикой. Получающийся контекст не связывается к определенному URL: это в состоянии обработать произвольные URL с идентификатором схемы этой фабрики. Например, вызов getObjectInstance() с obj
установите в NULL на фабрике контекста URL LDAP, возвратил бы контекст, который может разрешить URL LDAP такой как "ldap://ldap.wiz.com/o=wiz, c=us" и "ldap://ldap.umich.edu/o=umich, c=us". obj
строка URL, создайте объект (обычно контекст) идентифицированный URL. Например, предположите, что это - фабрика контекста URL LDAP. Если obj
"ldap://ldap.wiz.com/o=wiz, c=us", getObjectInstance () возвратил бы контекст, названный отличительным именем "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
нуль, name
относительно начального контекста по умолчанию. Если никакое имя не определяется, name
параметр должен быть нулем. Если фабрика использует nameCtx
это должно синхронизировать свое использование против параллельного доступа, так как реализации контекста, как гарантируют, не будут ориентированы на многопотоковое исполнение.
obj
- Возможно нулевой объект, содержащий расположение или ссылочную информацию, которая может использоваться в создании объекта.name
- Имя этого объекта относительно nameCtx
, или нуль, если никакое имя не определяется.nameCtx
- Контекстно-зависимое то, к который name
параметр определяется, или нуль если name
относительно начального контекста по умолчанию.environment
- Возможно нулевая среда, которая используется в создании объекта.Exception
- если эту объектную фабрику, с которой встречаются исключение, пытаясь создать объект, и никакие другие объектные фабрики, нужно попробовать.NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>)
, NamingManager.getURLContext(java.lang.String, java.util.Hashtable<?, ?>)
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.