2010-10-02 1 views
1

1) изменить $ CATALINA_HOME/CONF/context.xml с этой линией6 кот пользовательских свойств ресурса

<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) retrive этой недвижимости по

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) 

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

ответ

1

я решить эту проблему, retrive это свойство с этой линией:

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

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