Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации
СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT

6. Конфигурация

6.1 Свойства среды

Некоторые приложения JNDI нуждаются в способе передать различное предпочтение и информацию, которые определяют среду, в которой получают доступ к именованию и службы каталогов. Например, приложение, возможно, должно было бы определить уровень безопасности для того, чтобы получить доступ к службе каталогов. Или, когда каталог и службы именования распределяются, источник информации находится больше чем в одном месте - копии, ведущее устройство, кэши, и т.д. Приложение могло бы хотеть получить доступ к информации из авторитетного источника и должно указать на эту информацию к системе JNDI.

Чтобы адресовать эти требования, JNDI определяет много свойств, которые разработчики и пользователи могут использовать, чтобы обеспечить конфигурационную информацию для системы JNDI. Их вызывают свойствами среды.

Есть различные типы свойств среды:

См. Среду Контекста для связанных с безопасностью соображений при использовании свойств среды.

Хотя поддержка свойств среды довольно обширна, важно отметить, что приложение обычно не должно иметь дело с ними, или только должно установить одно или два свойства. Большинство свойств имеет разумные значения по умолчанию и только должно быть скорректировано, когда у приложения есть особые требования.

6.2 Среда контекста

Среда контекста представляется как a java.util.Hashtable или любой из его подклассов (например, java.util.Properties 1 ). Это обычно определяется, используя параметр InitialContext , InitialDirContext , или InitialLdapContext конструкторы, и увеличенный с данными из других источников (как обсуждено в остальной части этого раздела). Они наследованы от родительского контекста, поскольку методы контекста продолжаются от одного контекста до следующего. Например, следующий код создает среду, состоящую из двух связанных с безопасностью свойств, и создает начальный контекст, используя ту среду.

Hashtable env = new Hashtable();
env.put(Context.SECURITY_PRINCIPAL, "jsmith");
env.put(Context.SECURITY_CREDENTIALS, "xxxxxxx");
Context ctx = new InitialContext(env);

У контекстов, которые ищутся или иначе получаются из этого начального контекста, будут эти два свойства в их среде.

Среда контекста может быть исследована, используя Context.getEnvironment() .

Не все свойства среды значимы для всех контекстов. Те, которые не значимы, проигнорированы контекстом, но наследованы полученными контекстами (потому что они могли бы быть значимыми, например, к объединенным в федерацию контекстам).

6.3 Файлы ресурсов

Файл ресурсов JNDI является файлом в формате файла свойств (см. java.util.Properties ). Файл содержит список пар ключ/значение. Ключ является именем свойства (например, "java.naming.factory.object"), и значение является строкой в формате, определенном для того свойства. Вот пример файла ресурсов JNDI:

java.naming.factory.object=com.wiz.jndi.AttrsToCorba:com.wiz.jndi.ToPerson
java.naming.factory.state=com.wiz.jndi.CorbaToAttrs:com.wiz.jndi.FromPerson
java.naming.factory.control=com.wiz.jndi.MyResponseControlFactory

Есть два вида файлов ресурсов JNDI: приложение и провайдер.

Файлы ресурсов приложения

Когда приложение будет развернуто, у него обычно будет несколько каталогов кодовой базы и JAR в ее пути к классу. Точно так же, когда апплет развертывается, у него будут кодовая база и архивы, определяющие, где найти классы апплета. JNDI определяет местоположение всех названных файлов ресурсов приложения jndi.properties в пути к классу. Кроме того, если файл $JAVA_HOME/lib/jndi.properties существует и читаем, JNDI обрабатывает это как дополнительный файл ресурсов приложения. ( $JAVA_HOME каталог, названный java.home системное свойство.) Все свойства, содержавшиеся в этих файлах, помещаются в среду начального контекста. Эта среда тогда наследована другими контекстами.

Для каждого свойства, найденного больше чем в одном файле ресурсов приложения, JNDI использует первое найденное значение или в нескольких случаях, где имеет смысл делать так, это связывает все значения. Например, если java.naming.factory.object свойство находится в три jndi.properties файлы ресурсов, список объектных фабрик является связью значений свойств от всех трех файлов. Используя эту схему, каждый развертываемый компонент ответственен за перечисление фабрик, которые это экспортирует. JNDI автоматически собирает и использует все эти списки экспорта, ища классы фабрики.

Файлы ресурсов приложения являются доступным начинанием с Java 2 Платформы, за исключением того, что файл в $JAVA_HOME/lib может использоваться на всех платформах Java.

Файлы ресурсов провайдера

У каждого поставщика услуг есть дополнительный файл ресурсов, который содержит свойства, определенные для того провайдера. Имя этого ресурса:

[prefix/]jndiprovider.properties

где префикс является именем пакета реализации (й) контекста провайдера с каждым периодом (". ") преобразованный в наклонную черту (" / ").

Библиотека JNDI будет консультироваться с файлом ресурсов провайдера, определяя значения определенных свойств. Свойства кроме них могут быть установлены в файле ресурсов провайдера на усмотрение поставщика услуг. Документация поставщика услуг должна ясно утвердить, какие свойства позволяются.

6.4 Стандарт Application/Applet-scope Свойства JNDI

Свойства JNDI определенного стандарта могут поочередно устанавливаться в системных свойствах Среды выполнения Java, или в списке параметров апплета. Эти свойства:

java.naming.factory.initial
java.naming.factory.object
java.naming.factory.state
java.naming.factory.control
java.naming.factory.url.pkgs
java.naming.provider.url
java.naming.dns.url

Для JNDI, чтобы получить доступ к параметрам апплета, код апплета должен установить java.naming.applet свойство среды к экземпляру апплета ( java.applet.Applet ).

Когда эти свойства устанавливаются как системные свойства или параметры апплета, они влияют на все контексты приложения/апплета.

6.5 Как Свойства Среды Устанавливаются

Когда JNDI создает начальный контекст, среда контекста инициализируется со свойствами, определенными в параметре среды, который передают конструктору и всем файлам ресурсов приложения. Для application/applet-scope свойств также используются их значения от системных свойств и параметров апплета.

JNDI передает получающуюся среду к начальной реализации контекста. Среда тогда наследована контекстами, которые получаются из начального контекста. Так как JNDI выполняет любое необходимое слияние свойств и их значений, нет никакой потребности в приложении или реализации контекста, чтобы непосредственно консультироваться с системными свойствами или параметрами апплета.

6.6 Модификации к Среде

Среда контекста может быть изменена, используя addToEnvironment() и removeFromEnvironment() методы:

public interface Context {
        public Object addToEnvironment(String propName, Object val)
                throws NamingException;
        public Object removeFromEnvironment(String propName)
                throws NamingException;
        ...
}

Не все свойства среды значимы для всех контекстов. Изменения тем, которые не значимы, все еще записываются и передаются на полученные контексты.

Контекст

Изменение свойства, используя addToEnvironment() или removeFromEnvironment() методы влияют на экземпляр контекста, на который вызывается метод. Например, если Вы определяете новые учетные данные для контекста, чтобы использовать, последующие методы, вызванные на тот контекст, которые требуют, чтобы передача с сервером использовала те новые учетные данные (возможно, внутренне первым созданием нового соединения с сервером). Эти обновленные свойства среды наследованы экземплярами контекста, которые впоследствии получаются из экземпляра контекста, на который влияют, но иначе не влияют на другие экземпляры контекста, которые были существующими до обновления.

Своевременность

Когда изменение производится в свойствах среды, нет никакого требования что изменение быть проверенным и действоваться в это время addToEnvironment() или removeFromEnvironment() вызывается. Единственное требование - то, что изменение (или изменения) быть эффективными в следующий раз работа, которая использует то свойство, вызываются.

Значения по умолчанию

Для некоторых свойств среды JNDI определяет значения по умолчанию (см. Приложение A). Для других значение по умолчанию могло бы быть определено поставщиком услуг или группой поставщиков услуг. Если у среды контекста нет определенного свойства, контекст ведет себя, как будто у его среды есть то свойство с его значением по умолчанию.

Когда свойство удаляется из среды контекста, контекст принимает поведение значения по умолчанию, определенное для того свойства. Это не обязательно означает, что значение по умолчанию должно быть записано как значение свойства. Удаление может также быть обозначено отсутствием свойства от среды контекста.

Приемлемые Значения

У некоторых свойств среды есть фиксированный набор приемлемых значений, в то время как у других есть значения, которые должны следовать за определенным синтаксисом. Если недопустимое значение будет представлено, то специфичное для свойства исключение будет выдано (например, ConfigurationException , IllegalArgumentException , или AuthenticationNotSupportedException ). В некоторых случаях могло бы быть разумно для поставщика услуг принять дополнительные значения чем определенные, когда, те значения должны быть задокументированы.


1. Отметьте, что, если Вы используете Свойства, только с высокоуровневыми свойствами консультируются - с его значениями по умолчанию не консультируются - потому что Hashtable.get() используется, получая записи от среды. См. java.util.Properties для деталей.

СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT


Oracle и/или его филиалы Авторское право © 1993, 2012, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами