Tomcat數(shù)據(jù)源設(shè)置
Step by Step:1。將數(shù)據(jù)庫驅(qū)動程序拷貝到tomcat\common\lib目錄下面。
2。修改server.xml文件,在Context配置節(jié)點下面加上資源節(jié)點,如下:
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="" driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=GBK&useUnicode=TRUE"/>
注意的是:如果有&字符,需要轉(zhuǎn)移成&(XML文件規(guī)范)
3。修改Web應(yīng)用WEB-INF\web.xml文件,加上Resource-Def,如下:
<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>
4。重新啟動Web應(yīng)用,在Web應(yīng)用中可以通過下面的代碼來獲取數(shù)據(jù)源和數(shù)據(jù)庫連接:
javax.naming.InitialContext context = new javax.naming.InitialContext();
DataSource ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/TestDB" );
connection = (Connection)ds.getConnection();
Problem And Answer:
1。Question:如果出現(xiàn)下列提示:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:640),怎么辦?
Answer:檢查在Tomcat中conf/server.xml文件,檢查<context>是否設(shè)置useNaming="false",如果是,去掉。
2。Question:如果無法找到數(shù)據(jù)庫驅(qū)動程序怎么辦?
Answer:檢查數(shù)據(jù)庫驅(qū)動JDBC程序是否放在了Tomcat\common\lib目錄下面
對于第一個問題要特別注意:
今天在調(diào)試時,突然發(fā)現(xiàn)數(shù)據(jù)連接池不能用了,但我用jsp文件測試,是ok了,于是我在類文件中添加main進(jìn)行測試,也出現(xiàn)了錯誤,一直想不明白,后來經(jīng)過一位朋友的提醒,原來犯了一個低級錯誤:java單元的環(huán)境是jdk;而jsp的環(huán)境卻是tomcat;數(shù)據(jù)連接池是在tomcat中配置的,所以能正常運行的,但java測試的環(huán)境只有jdk,所以在引用數(shù)據(jù)連接池時就時出現(xiàn)找不環(huán)境的錯誤~
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
connect fail at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.zb.struts.db.Db.getDbConn(Db.java:37)
at com.zb.struts.db.Db.getStm(Db.java:52)
at com.zb.test.TestExcel.readDataToExcel3(TestExcel.java:239)
at com.zb.test.TestExcel.main(TestExcel.java:50)
posted on 2007-09-09 11:37 劉錚 閱讀(675) 評論(1) 編輯 收藏 所屬分類: Tomcat