Tomcat中DataSource的配置方法
發表于:2007-07-01來源:作者:點擊數:
標簽:
很多網上的文章都在說要改Server.xml,包括我手上的一本《Eclipse 從入門到精通》。不過經過今天的噩夢般的體驗,最終還是沒有改Server.xml,把DataSource配置好了。中間走過無數彎路,包括把 Tomcat 從5.5.9降到5.0.28(最終還是沒有用5.5.9,周圍人都說,不
很多網上的文章都在說要改Server.xml,包括我手上的一本《Eclipse 從入門到精通》。不過經過今天的噩夢般的體驗,最終還是沒有改Server.xml,把DataSource配置好了。中間走過無數彎路,包括把
Tomcat從5.5.9降到5.0.28(最終還是沒有用5.5.9,周圍人都說,不要用最新的東西……實驗室的都在用4.1……)。
MILY: courier new">先說一下關于Tomcat 5.5.9的問題,由于Tomcat5.5.9沒有帶上admin包,必須要自己下,下完以后復制到對應的目錄。另外還有一重要步驟:把root下的那個 admin目錄給刪掉……或者把那個admin\index.html改名或刪掉……這個問題折磨了我半個多小時,就是找不出來admin的配置頁面在哪兒……
很奇怪,root\admin目錄里沒有任何jsp/html文件,讓我幾乎以為下漏了東西。其實似乎是如果把那個admin目錄刪掉, Tomcat自動指到了另外一個地方。進入以后查看,可以發現其實/admin指向/server/webapps/admin,但是那里也并沒有 jsp/html文件,真正的地址在:/src/jakarta-
tomcat-catalina/webapps/admin……所以,大家一定要記住吧index.html給干掉……
但是成功進入了以后,我一直無法配置好jdbc/
mysql的DataSource……極度郁悶之下,加上旁人說最新版總是有
bug的……我換回了5.0.28……
5.0.28直接進入admin就可以了,不用走那么多彎路。配置DataSource有兩種方法,一個就是直接到那個Context(/jsp文件目錄)下面的Data Sources配置,配置的內容基本上都很清楚(以mysql為例):
JNDI Name: jdbc/mysql(自己定)
Data Source URL: jdbc:mysql://localhost/test (test是數據庫名)
JDBC Driver Class: com.mysql.jdbc.Driver (記得把驅動拷到common\lib)
Max. Active Connections: 最大活動連接,默認4,不能用于產品發布,發布的時候,改成1000左右比較好,不過調試的時候沒有必要。
Max. Idle Connections: 最大空閑連接,默認2。
Max. Wait for Connection: 等待連接時間,默認5000。
Validation Query: 驗證用查詢語句,非必填。
然后Save, Commit。
這里有一個bug. 一般最好是在所有修改完成以后Commit。如果先Commit再進行其他的選擇修改,一般來說會直接退出界面……我一般都是Save/Commit/Log out……
然后在程序中引用:
InitialContext ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("
java:comp/env/jdbc/mysql"); // jdbc/mysql是JNDI Name
con = ds.getConnection();
其他的就一樣用了,注意返回前要手動關閉數據庫連接,否則很快就會連接數耗盡。
另外一種方法就是在全局的Resource里的DataSource進行設置,然后在Context中的Resource Links里面引用。
Resource Link設置方法如下:
Name: jdbc/mysql(可以與全局名不同,比如jj,其他不變即可,相應的,ctx.lookup中要改為"java:comp/env/jj")
Global: jdbc/mysql(全局Resource里Data Source的名字)
Type: javax.sql.DataSource
在這里《Eclipse從入門到精通》的方法有一些問題:可以直接在Resource Link里面設置,并不用直接去更改Server.xml。它前面用寫Server.xml的方法設置不用deploy的Context,tomcat確認更新以后就把這個Context寫到其他地方了,可以在Host.Contest里面直接修改了,增加Resource Link。
《E》書里面手寫Server.xml達到增加非Tomcat目錄Context效果的語句如下:
在server.xml文件最末尾的之前插入:
</Context path="/hello"
reloadable="true"
docBase="C:\eclipse\workspace\myweb\hello"
workDir="C:\eclipse\workspace\myweb\bin">
其實也可以直接在admin界面里面TomcatServer.Service.Host里面直接添加(注意將Use Naming設為True,否則會出現Name java:comp is not bound in this Context異常),但是這樣的話,無法規定servlet輸出的目錄(workDir)??梢詸嗪夂笫褂?。個人認為直接設置admin界面還是挺方便的。
原文轉自:http://www.anti-gravitydesign.com