1. 程式人生 > >eclipse web工程中jndi資料來源設定

eclipse web工程中jndi資料來源設定

開發的web工程改用jndi來配置資料來源。

spring配置:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
     <property name="jndiName">
          <value>java:comp/env/jdbc/yourDataSource</value>
     </property> 
</bean>

tomcat的server.xml中配置Resource(可放置在GlobalNamingResources中):

    <Resource name="jdbc/yourDataSource"          
               type="javax.sql.DataSource"   
               driverClassName="com.mysql.jdbc.Driver"    
               url="jdbc:mysql://127.0.0.1:3306/yourDataBase?characterEncoding=utf8"  
               username="testuser"          
               password="testpassword"   
               maxIdle="20"   
               maxWait="2000"  
               maxActive="20"  
               removeAbandoned="true" 
               removeAbandonedTimeout="180"
               logAbandoned="true"  
               factory="com.alibaba.druid.pool.DruidDataSourceFactory" />

注意如果缺失相應的jar包,需要拷貝jar包到tomcat/lib下,這裡用的是druid

具體專案的<Context></Context>標籤中引用

<ResourceLink global="jdbc/yourDataSource" name="jdbc/yourDataSource" type="javax.sql.DataSource"/>

問題來了,我的web容器是tomcat8,且整合大eclipse中了,每次啟動時都會為單個專案在tomcat\conf\Catalina\localhost目錄下生成單獨的xxx.xml檔案。如果在tomcat目錄下的server.xml中進行設定,每次設定都還原了。啟動tomcat則報找不到資料來源


後來查資料才知道,Resource配置在錯誤的地方了。

如上圖配置,jndi要配置到eclipse的Servers的對應tomcat下的server.xml中,ResourceLink 也是。