Tomcat中DataSource的配置方法
2024-05-04 23:04:34
供稿:網(wǎng)友
國內(nèi)最大的酷站演示中心!
很多網(wǎng)上的文章都在說要改server.xml,包括我手上的一本《eclipse 從入門到精通》。不過經(jīng)過今天的噩夢般的體驗,最終還是沒有改server.xml,把datasource配置好了。中間走過無數(shù)彎路,包括把 tomcat從5.5.9降到5.0.28(最終還是沒有用5.5.9,周圍人都說,不要用最新的東西……實驗室的都在用4.1……)。
先說一下關(guān)于tomcat 5.5.9的問題,由于tomcat5.5.9沒有帶上admin包,必須要自己下,下完以后復(fù)制到對應(yīng)的目錄。另外還有一重要步驟:把root下的那個 admin目錄給刪掉……或者把那個admin/index.html改名或刪掉……這個問題折磨了我半個多小時,就是找不出來admin的配置頁面在哪兒……
很奇怪,root/admin目錄里沒有任何jsp/html文件,讓我?guī)缀跻詾橄侣┝藮|西。其實似乎是如果把那個admin目錄刪掉, tomcat自動指到了另外一個地方。進入以后查看,可以發(fā)現(xiàn)其實/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配置,配置的內(nèi)容基本上都很清楚(以mysql為例):
jndi name: jdbc/mysql(自己定)
data source url: jdbc:mysql://localhost/test (test是數(shù)據(jù)庫名)
jdbc driver class: com.mysql.jdbc.driver (記得把驅(qū)動拷到common/lib)
max. active connections: 最大活動連接,默認(rèn)4,不能用于產(chǎn)品發(fā)布,發(fā)布的時候,改成1000左右比較好,不過調(diào)試的時候沒有必要。
max. idle connections: 最大空閑連接,默認(rèn)2。
max. wait for connection: 等待連接時間,默認(rèn)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();
其他的就一樣用了,注意返回前要手動關(guān)閉數(shù)據(jù)庫連接,否則很快就會連接數(shù)耗盡。
另外一種方法就是在全局的resource里的datasource進行設(shè)置,然后在context中的resource links里面引用。
resource link設(shè)置方法如下:
name: jdbc/mysql(可以與全局名不同,比如jj,其他不變即可,相應(yīng)的,ctx.lookup中要改為"java:comp/env/jj")
global: jdbc/mysql(全局resource里data source的名字)
type: javax.sql.datasource
在這里《eclipse從入門到精通》的方法有一些問題:可以直接在resource link里面設(shè)置,并不用直接去更改server.xml。它前面用寫server.xml的方法設(shè)置不用deploy的context,tomcat確認(rèn)更新以后就把這個context寫到其他地方了,可以在host.contest里面直接修改了,增加resource link。
《e》書里面手寫server.xml達(dá)到增加非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設(shè)為true,否則會出現(xiàn)name java:comp is not bound in this context異常),但是這樣的話,無法規(guī)定servlet輸出的目錄(workdir)。可以權(quán)衡后使用。個人認(rèn)為直接設(shè)置admin界面還是挺方便的。