我想基于JNDI条目导入资源。
我的application-context.xml如下所示:
<jee:jndi-lookup id="td.naccms.cods2.config.path"
jndi-name="td.naccms.cods2.config.path" expected-type="java.lang.String"
default-value="classpath:application-context-persistence.xml" />
<context:property-placeholder />
<import resource="${td.naccms.cods2.config.path}" />
并且tomcat返回以下错误:
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [application-context-cods2-web.xml]; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'td.naccms.cods2.config.path' in string value "${td.naccms.cods2.config.path}"
注意,我不想从属性文件加载资源,因为要导入的资源将根据JNDI进行更改。
答案 0 :(得分:0)
使用占位符${...}
时,您可以使用:
指定另一个值,以防表达式无法解析(这甚至可能是另一个占位符!)。
因此,不要自己查找查找,而只需使用:
传递值。
<import resource="${td.naccms.cods2.config.path:classpath:application-context-persistence.xml}" />
Environment
抽象(用于在较新的Spring版本中解析占位符)还检查JNDI以查找系统环境,属性文件(通过@PropertySource
加载)和Web应用程序旁边的属性ServletContext
。