最近做個(gè)項(xiàng)目,需要在tomcat,weblogic中寫連接池.weblogic還是老樣子,照著圖形界面配置就可以了.Tomcat我用的是5.5.9.雖說(shuō)以前用tomcat4版本寫過(guò),可早就聽(tīng)說(shuō),5版本和4版本的差距很大.所以就提前做好了心里準(zhǔn)備,先看了一個(gè)幫助文檔,花了進(jìn)一個(gè)小時(shí)的時(shí)間搞定,現(xiàn)在整理出來(lái)與大家分享.
其實(shí)Tomcat5要比tomcat4簡(jiǎn)單多了,如果還是按tomcat4的套路來(lái),呵呵,那恐怕那走很多彎路了.
第一步:在tomcat5→common→lib下加入你所連接數(shù)據(jù)庫(kù)的驅(qū)動(dòng)包.這里我用的mysql數(shù)據(jù)庫(kù).
第二步:在tomcat5→conf→Catalina→localhost配置一個(gè)xml文件.這里一定要注意,必須和你的項(xiàng)目名稱是一模一樣的.我用的項(xiàng)目名為testTomcat.testTomcat.xml文件配置如下:
??? <Resource name='jdbc/mysql' auth='Container'
????????????? type='javax.sql.DataSource' driverClassName='com.mysql.jdbc.Driver'
?????????????url='jdbc:mysql://127.0.0.1:3306/addressbooksample'
????????????? username='root' password='' maxActive='20' maxIdle='10'
????????????? maxWait='-1'/>
?
?<ResourceLink
??? global="UserDatabase"
??? name="users"
type="org.apache.catalina.UserDatabase"/>
這里就和以前的tomcat4版本不一樣了,以前要在server.xml配置.而tomcat5版本直接在這里配置就可以了.
第三步:在你項(xiàng)目的web.xml配置如下:
?<resource-ref>
??? <description>mysql ?for 192.1.1.156 </description>
??? <res-ref-name> jdbc/mysql </res-ref-name>
??? <res-type>javax.sql.DataSource</res-type>
??? <res-auth>Container</res-auth>
?</resource-ref>
注意:這里的res-ref-name名字必須和testTomcat.xml文件中的一樣.其實(shí)這一步省去也是可以的.但還是建議配置一下.
第四步:建一個(gè)JSP頁(yè)面來(lái)感受一下成功的喜悅吧.頁(yè)面代碼如下
Context initCtx = new InitialContext();
???? ???? ?Context ctx = (Context) initCtx.lookup("java:comp/env");
???? ???? ds ??=(javax.sql.DataSource) ctx.lookup(
"jdbc/mysql");
???????? ?System.out.println("Init datasource OK @!");
注意:別忘了引入相關(guān)的包哦.還要注意的是這里不能用主函數(shù)來(lái)測(cè)試.因?yàn)槟阒骱堑玫?/span>tomcat的上下文的.
在項(xiàng)目中應(yīng)用如下:
public class TomcatJDNI {
?
???? public static String
???? DATASOURCE_CONFIG_FILE="test.db";
???????? public static DataSource ds;
????????
???????? static{
????????????? try{
???????? ?ResourceBundle rb = ResourceBundle.getBundle(DATASOURCE_CONFIG_FILE);
???????? ?String dsName???? = rb.getString("datasource_name");
????????????? ?Context initCtx = new InitialContext();
???? ???????? Context ctx = (Context) initCtx.lookup("java:comp/env");
???? ???? ds?? =(javax.sql.DataSource) ctx.lookup(dsName);
???????? ?System.out.println("Init datasource OK @!");
???? }catch(Exception e){
???????? System.out.println("can’t init datasource !");
???? }
???? }
?
???? public static Connection getConnection() throws SQLException{
???????? return ds.getConnection();
???? }
}
這里的test.db是一個(gè)db.properties文件.文件內(nèi)容如下
datasource_name= jdbc/mysql
這樣擴(kuò)展性比較好.連接其它的數(shù)據(jù)庫(kù),只需要改動(dòng)此文件,無(wú)需重新編譯.
就到這里吧
Good luck!