我尝试在位于我的server.xml
文件中的'PropertyPlaceholderConfigurer'中获取Tomcat的jpa-spring.xml
中指定的环境变量。
到目前为止,设置如下:
Tomcat server.xml
<Environment description="Identifies the server environement"
name="server-env"
type="java.lang.String"
value="dev" />
in WebContent/META-INF/context.xml
:
<Context>
<ResourceLink name="server-env" global="server-env" type="java.lang.String"/>
</Context>
在WebContent/WEB-INF/web.xml
中引用的内容如下:
<resource-env-ref>
<description>Identifies server environement</description>
<resource-env-ref-name>server-env</resource-env-ref-name>
<resource-env-ref-type>java.lang.String</resource-env-ref-type>
</resource-env-ref>
<!-- Spring Integration -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/jpa-spring.xml
</param-value>
</context-param>
在/WEB-INF/config/jpa-spring.xml
中,我尝试将该变量作为替代:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>WEB-INF/config/db.${server-env}.properties</value>
</list>
</property>
</bean>
这是我使用网络上的几篇文章中的信息整理的设置。
然而,我收到的错误就像......
Could not resolve placeholder 'server-env' in [WEB-INF/config/db.${server-env}.properties] as system property: neither system property nor environment variable found
05 Nov 2011 14:45:13,385 org.springframework.web.context.ContextLoader
ERROR Context initialization failed
org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/config/db.${server-env}.properties]
......启动tomcat时。
实现我想要的正确方法是什么?
答案 0 :(得分:5)
以下是我的建议
server-env
并使用相同的方法来加载属性文件真的很复杂。 PropertyPlaceholderConfigurer
)的方式,spring将首先尝试在OS环境中查找属性server-env
,然后在java系统属性中查找(使用-D选项从命令传递) )。它在这两个地方都找不到它,因此失败了。 set server-env=dev
.Plz检查尊重操作系统文档)。 答案 1 :(得分:3)
那些Environment
元素正在设置JNDI。默认情况下,Spring不支持从JNDI中获取值。
http://www.theserverside.com/news/thread.tss?thread_id=35474#179220
可能会给你一些有用的想法。