Проблема поиска Tomcat JNDI - PullRequest
       5

Проблема поиска Tomcat JNDI

1 голос
/ 05 сентября 2011

Я пытался прочитать значение свойства в Tomcat. Мой план состоял в том, чтобы получить доступ к значению, используя System.getProperty("LOGPATH"), где LOGPATH - это название моей собственности. Однако я не нашел способа установить значение свойства системы в Tomcat.

Есть ли способ установить свойство System в Tomcat?

Поскольку я не получил никакой документации по настройке свойства System, я подумал о доступе к значению с помощью JNDI. Поэтому я добавил следующую запись

<Environment name="LOGPATH" type="java.lang.String" value="c:/temp" />

после

<GlobalNamingResources>

в server.xml файле.

Код, который я использовал для поиска JNDI:

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env/");

String path = (String) envCtx.lookup("LOGPATH");

Когда я выполнил вышеуказанный код, я получил следующее сообщение об ошибке.

javax.servlet.ServletException: Name LOGPATH is not bound in this Context
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)

Затем я добавил запись в свой web.xml

 <resource-env-ref>
     <resource-env-ref-name>LOGPATH</resource-env-ref-name>
 <resource-env-ref-type>java.lang.String</resource-env-ref-type>
 </resource-env-ref>

Теперь сообщение об ошибке меняется на

javax.naming.NamingException: Cannot create resource instance
org.apache.naming.factory.ResourceEnvFactory.getObjectInstance(ResourceEnvFactory.java:99)

Что я сейчас делаю не так? Спасибо за помощь.

Ответы [ 3 ]

1 голос
/ 15 мая 2012

Вам также нужна ссылка на ресурс в контексте вашего веб-приложения. Контекст обычно помещается в META-INF / context.xml и будет выглядеть примерно так:

<Context>
    <Resource name="LOGPATH" global="LOGPATH" type="java.lang.String" />
</Context>

Это "предоставляет" веб-приложению права на просмотр определенного значения Environment.

Что касается настройки системных свойств, просто добавьте строку в tomcat / conf / catalina.properties примерно так:

LOGPATH=C:/temp

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

0 голосов
/ 15 мая 2012

Я закодировал свою строку среды в файле контекста в папке conf / Catalina / localhost и назвал ее так же, как и в моем веб-приложении.Затем я использовал Spring JndiObjectFactoryBean, чтобы получить его.Надеюсь, что это поможет.

0 голосов
/ 05 сентября 2011

Сделайте это init-param в вашем web.xml и получите доступ к нему через ServetContext.

...