Пользовательский ресурс ресурса Tomcat 6 - PullRequest
1 голос
/ 02 октября 2010

1) измените $ CATALINA_HOME / conf / context.xml с помощью этой строки

<Environment name="testValue" value="hello world" type="java.lang.String" override="true" />

2) добавьте это в web.xml нового веб-приложения

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

3)восстановите это свойство с помощью

Context ic = new InitialContext();
String value = (String)ic.lookup("testValue");
System.err.println("value = " + value);

, получив следующую ошибку:

javax.naming.NameNotFoundException: Name testValue is not bound in this Context
    at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at it.skillbill.at.CustomProperties.contextInitialized(CustomProperties.java:18)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:519)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

У меня только один вопрос: почему?

Ответы [ 2 ]

3 голосов
/ 02 октября 2010

В этом случае вам не нужна запись "resource-env-ref" в вашем web.xml.Это используется, когда вы хотите сослаться на настроенные ресурсы, такие как DataSource.Если вам нужно только настроить некоторые свойства среды, вы можете использовать конфигурацию «Environment» или выделенную «env-entry» в вашем файле web.xml.Тогда вы можете ссылаться на значение, используя «java: comp / env / testValue»

1 голос
/ 02 октября 2010

Я решил эту проблему, восстановив это свойство с помощью этой строки:

(String)ic.lookup("java:comp/env/testValue");
...