Строка в контексте jndi по умолчанию с Apache Geronimo - Как?
В сервлете я делаю следующее:
Context context = new InitialContext();
value = (String) context.lookup("java:comp/env/propertyName");
В экземпляре Apache Geronimo (WAS CE 2.1) как связать значение с ключом propertyName?
В Websphere AS 6 я могу настроить эти свойства для поиска JNDI на странице "Привязки пространства имен" в консоли управления, но, насколько я знаю, я не могу найти способ сделать это в сообществе в Интернете.
2 ответа
Одна из возможностей - добавить свойства в файл web.xml (в каталоге WEB-INF), используя один или несколько <env-entry>
теги. Например, что-то вроде следующего:
<env-entry>
<description>My string property</descriptor>
<env-entry-name>propertyName</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Your string goes here</env-entry-value>
</env-entry>
Каждый тег env-entry объявляет новую переменную окружения, к которой вы затем можете обращаться из java:comp/env
контекст.
После того, как вы добавите необходимые env-entry
Вы можете использовать код, аналогичный тому, который вы уже опубликовали, для доступа к этим значениям. Имейте в виду, у меня не установлен Geronimo, поэтому я не знаю, нужно ли выполнять какие-либо дополнительные настройки, чтобы сделать эту работу.
Можно поместить ваши свойства в файл и сделать имя и местоположение файла ресурс-ссылкой типа URL в web.xml. Значение ресурса задается в geronimo-web.xml.
Ваш web.xml будет иметь следующую запись:
<resource-ref>
<res-ref-name>configFileName</res-ref-name>
<res-type>java.net.URL</res-type>
</resource-ref>
В geronimo-web.xml вы определяете значение для configFileName
<name:resource-ref>
<name:ref-name>configFileName</name:ref-name>
<name:url>file:///etc/myConfigFile</name:url>
</name:resource-ref>
В Java у вас есть следующий код для поиска значения:
initialContext = new InitialContext();
URL url = (URL) initialContext.lookup("java:comp/env/configFileName");
String configFileName = url.getPath();
Затем вы должны открыть файл и прочитать любое значение в нем.
Результатом всего этого является то, что у вас есть свойства в файле в файловой системе. Он не будет перезаписан при повторном развертывании приложения.