很久沒用Tomcat當Server(?),主要是因為Tomcat都只拿來當Prototype用,而且其他的設定幾乎都在Spring裡就設完,突然要手動設個DataSource都要看參考文件看半天。DataSource的設定大約分為2類,第一種是僅供單一Context使用旳,另一種是可以供所有Context使用的全域DataSource,其它Ap Server幾乎都是僅有第二種,我也比較傾向採用第二種類型的設定,不過Tomcat 6在設定全域的DataSource後,shutdown時都會hold住無法直接結束,老要用kill process的方式清除…
DataSource會用到的設定只有3個
(1)<Resource>:設定DataSource用的Connection Pool相關參數
<Resource auth="Container"
name="jdbc/TestDB"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test?autoReconnect=true"
username="root"
password="abcd"
logAbandoned="true"
maxActive="10"
maxIdle="3"
maxWait="1000"
poolPreparedStatements="true"
removeAbandoned="true"
removeAbandonedTimeout="60"
testOnBorrow="true"
validationQuery="SELECT 1"/>
(2)<ResourceLink>:如果採用全域式的設定,在要使用DataSource的Context中加入ResourceLink的設定才能正確取得該DataSource。
<ResourceLink
global="jdbc/TestDB"
name="jdbc/TestDB"
type="javax.sql.DataSource"/>
(3)<resource-ref>:正常而言要在web.xml中加這個設定,不過tomcat中實測可以不用。。。
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
一、單一Context設定
只要在server.xml或單獨的context.xml中的<Context>加入<Resource 。。。>即可
二、全域Context設定
在server.xml中的&lt;GlobalNamingResources>中加入<Resource 。。。>再針對要使用該DataSource的Context中加入<ResourceLink 。。。>
Tomcat6的設定是較之前其他版本要容易些,但是為何shutdown時會hang住?Log中也沒看到什麼特別奇怪的訊息。。。難不成又是mac惹的禍?
沒有留言:
張貼留言