Spring使用Tomcat JNDI Datasource的配置如下,連結的資料庫為MySQL 5,7。
開啟Tomcat的context.xml
(可在tomcat安裝目錄下的conf
目錄中找到。),並在<Context>
下加入<Resource>
設定連線。底下的設定為對本機的MySQL中名為TestDB的資料庫進行連線。
範例使用的MySQL jdbc driver為6.06,所以driverClassName="com.mysql.cj.jdbc.Driver"
,如果是5.x版則用原本的driverClassName="com.mysql.jdbc.Driver"
即可。
url
後接的參數用&區隔是因為xml不能使用XML entity例如&
,必須改用entity code代替。
<Context>
...
<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/TestDB?serverTimezone=CST&useUnicode=true&characterEncoding=UTF-8"
username="matthung"
password="12345"
maxTotal="100"
maxIdle="20"
maxWaitMillis="10000"
minIdle="5"/>
</Context>
在Spring配置檔中將JNDI設為datasouce,使用<jee:jndi-lookup/>
。注意jndi-name
的名稱即為<Resouce>
的name
名稱,如果名稱不一致則Spring會找不到而發生javax.naming.NameNotFoundException
例外
javax.naming.NameNotFoundException: Name [xxx] is not bound in this Context. Unable to find [jdbc].
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee.xsd">
...
<!-- 取得Tomcat JNDI Datasource -->
<jee:jndi-lookup id="dataSource"
jndi-name="jdbc/TestDB"
proxy-interface="javax.sql.DataSource"/>
...
</beans>
如果本篇有幫助到您,幫忙點一下廣告支持,感恩。
參考:
沒有留言:
張貼留言