tomcat数据源配置文件缓存问题及解决

来源:互联网 发布:php邮件系统 编辑:程序博客网 时间:2024/06/06 10:04

项目只有一个dataSource时,使用JNDI方式使用tomcat6自带的数据源连接数据库,系统启动正常。

在同一个项目中有加了另外一个dataSource(为了使用不同的数据库),也使用JNDI方式使用tomcat6自带的数据源连接数据库,系统启动就报异常:NameNotBoundException(后一个数据源没有被绑定)。

原因:tomcat6部署后在 TOMCAT_HOME/conf/Catalina/localhost/ 目录下生成数据源配置文件从第一次部署以后就一直没有再改变过。

解决:把 TOMCAT_HOME/conf/Catalina/localhost/ 目录下相应的的数据源配置文件删除,再重新部署项目,即可正常启动系统

 

附主要配置文件主要代码:

jdbc.properties:

  jdbc.dataSource=java:comp/env/sssDataSource
  jdbc.dataSource2=java:comp/env/sssDataSource2

 

applicationContext-db.xml:

 <bean id="propertyConfigurer"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <list>
    <value>classpath:jdbc.properties</value>
   </list>
  </property>
 </bean> 

 <bean id="dataSource"
  class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName">
   <value>${jdbc.dataSource}</value>
  </property>
 </bean>
 <bean id="dataSource2"
  class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName">
   <value>${jdbc.dataSource2}</value>
  </property>
 </bean>

 

项目META-INF中的数据源配置文件context.xml:

<Context path="/sss" docBase="sss"
 debug="5"
    reloadable="false"
    crossContext="true">
 <ResourceLink name="sssDataSource" global="sssDataSource" type="javax.sql.DataSource"/>
 <ResourceLink name="sssDataSource2" global="sssDataSource2" type="javax.sql.DataSource"/>
</Context>

 

tomcat下server.xml中对数据源的配置:

  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
 <Resource
  name="sssDataSource"
  type="javax.sql.DataSource"
  password="root"
  driverClassName="com.mysql.jdbc.Driver"
  maxIdle="2"
  maxWait="5000"
  username="root"
  url="jdbc:mysql://localhost:3306/sss?useUnicode=true&amp;characterEncoding=utf-8"
  maxActive="4"/>
 <Resource
  name="sssDataSource2"
  type="javax.sql.DataSource"
  password="root"
  driverClassName="com.mysql.jdbc.Driver"
  maxIdle="2"
  maxWait="5000"
  username="root"
  url="jdbc:mysql://localhost:3306/sss2?useUnicode=true&amp;characterEncoding=utf-8"
  maxActive="4"/>
  </GlobalNamingResources>

 

 

原创粉丝点击