在Spring 4.x中基于JNDI导入资源

时间:2015-10-26 18:43:49

标签: spring

我想基于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进行更改。

1 个答案:

答案 0 :(得分:0)

使用占位符${...}时,您可以使用:指定另一个值,以防表达式无法解析(这甚至可能是另一个占位符!)。

因此,不要自己查找查找,而只需使用:传递值。

<import resource="${td.naccms.cods2.config.path:classpath:application-context-persistence.xml}" />

Environment抽象(用于在较新的Spring版本中解析占位符)还检查JNDI以查找系统环境,属性文件(通过@PropertySource加载)和Web应用程序旁边的属性ServletContext