java.lang.String в контексте 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 на странице «Привязки пространства имен» в консоли управления, но я не могу найти способ сделать это в выпуске сообщества в Интернете.


person stjohnroe    schedule 26.09.2008    source источник


Ответы (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, поэтому я не знаю, нужно ли выполнить какую-либо дополнительную настройку, чтобы это заработало.

person Mike Spross    schedule 27.09.2008

Можно поместить свои свойства в файл и сделать имя и местоположение файла ссылкой на ресурс типа 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();

Затем вам нужно открыть файл и прочитать любое значение, которое там есть.

Результатом всего этого является то, что у вас есть свойства в файле в файловой системе. Он не будет перезаписан при повторном развертывании приложения.

person boes    schedule 16.03.2011