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 也是。