我们的一个应用程序在Tomcat的context.xml中声明了一些参数:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Parameter name="defaultSchema" override="true" value="demo"/>
<Resource
auth="Container"
description="DB Connection for Local Jazzee"
driverClassName="oracle.jdbc.OracleDriver"
. . .
/>
</Context>
然后在Spring的applicationContext.xml中,我们可以在实例化一些bean时使用该参数:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.default_schema">${defaultSchema}</prop>
. . .
</bean>
这很好。
我遇到的问题是我试图在另一个应用程序中复制它,但它无法正常工作。当我尝试启动应用程序时,我收到错误:
Invalid bean definition with name 'sessionFactory' defined in class path resource [db/applicationContext.xml]: Could not resolve placeholder 'defaultSchema'
在这两种情况下,它都是相同的开发人员Tomcat实例,因此Tomcat版本是相同的。 Spring库版本看起来也是一样的。此外,如果我在应用程序上下文中对模式名称进行硬编码,则可以正常工作。所以dataSource很好。
关于可能破坏此功能的任何想法?