在Java Web開發(fā)中都要與數(shù)據(jù)庫打交道,為了不頻繁地打開和關(guān)閉數(shù)據(jù)庫,以減少數(shù)據(jù)庫操作負(fù)荷,可使數(shù)據(jù)庫在開發(fā)過程中保持打開狀態(tài),在這里我們采用配置數(shù)據(jù)源的方式(JNDI),而不是傳統(tǒng)地JDBC方式。下面就針對常規(guī)型的MySQL5.0.15和
Tomcat6.0的數(shù)據(jù)源的基本配置進(jìn)行簡單的介紹:
首先聲明,如果數(shù)據(jù)源沒有配置好的話,在開發(fā)過程中會拋出諸如下列異常等:
1、
org.
apache.
tomcat.
dbcp.
dbcp.
SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
2、Caused by: java.sql.SQLException: No suitable driver
3、Name jdbc is not bound in this context
現(xiàn)在開始講下如何配置好數(shù)據(jù)源同時也是解決上述異常的辦法:
方案一:
步驟一、在
Tomcat6.0解壓目錄conf下找到context.xml,在其中的<Context></Context> 中加入如下代碼(要根據(jù)自己的情況稍加修改): <Resource name="jdbc/myznt" auth="Container" type="javax.sql.DataSource" password="localhost" username="root" driverClassName="
org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/myznt" maxActive="100" maxIdle="30" maxWait="5000"/>
步驟二、在工程應(yīng)用中/WEB-INF/下的web.xml中加入如下代碼(要根據(jù)自己的情況稍加修改):
<resource-ref>
<description>MySQL DataSource</description>
<res-ref-name>jdbc/myznt</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
步驟三、把MySQL-Connector-java-3.0.12-bin.jar(可換更高版本)加到
Tomcat安裝目錄中的lib目錄下和工程中的lib目錄下。
通過這三步,一個基本的數(shù)據(jù)源就配置成功了!
方案二
步驟一、在
Tomcat6.0解壓目錄conf下找到server.xml,在其中的<GlobalNamingResources></GlobalNamingResources>中加入如下代碼(要根據(jù)自己的情況稍加修改):
<Resource name="jdbc/myznt" auth="Container" type="javax.sql.DataSource" password="localhost" username="root" driverClassName="
org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/myznt" maxActive="100" maxIdle="30" maxWait="5000"/>
步驟二、在
Tomcat6.0解壓目錄conf下找到context.xml,在其中的<Context></Context>中加入并修改成如下代碼(要根據(jù)自己的情況稍加修改):
<Context path="/znt" debug="1" reloadable="true" docBase="E:\EclipseWorkPlace\MyZNT\WebRoot">
<ResourceLink global="jdbc/myznt" name="jdbc/myznt" type="javax.sql.Datasource"/>
................<!--此間可能有系統(tǒng)其它自配的內(nèi)容,可不管-->
</Context>
步驟三、在工程中/WEB-INF/下的web.xml中加入如下代碼(要根據(jù)自己的情況稍加修改):
<resource-ref>
<description>MySQL DataSource</description>
<res-ref-name>jdbc/myznt</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
步驟四、把MySQL-Connector-java-3.0.12-bin.jar(可換更高版本)加到
Tomcat安裝目錄中的lib目錄下和工程中的lib目錄下。
通過以上四步就好了!
方案三(具有不穩(wěn)定性,慎用)
步驟一、在
Tomcat6.0解壓目錄conf下找到server.xml,在其中的<Host></Host>中加入如下代碼(要根據(jù)自己的情況稍加修改):
<Context path="/znt" docBase="E:\EclipseWorkPlace\MyZNT\WebRoot"
debug="5" reloadable="true" crossContext="true">
<Logger className="
org.
apache.catalina.logger.FileLogger"
prefix="localhost_MysqlTest_log." suffix=".txt"
timestamp="true"/>
<Resource name="jdbc/myznt" auth="Container" type="javax.sql.DataSource" password="localhost" username="root" driverClassName="
org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/myznt" maxActive="100" maxIdle="30" maxWait="5000"/>
</Context>
步驟二、在工程中/WEB-INF/下的web.xml中加入如下代碼(要根據(jù)自己的情況稍加修改):
<resource-ref>
<description>MySQL DataSource</description>
<res-ref-name>jdbc/myznt</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
步驟三、把MySQL-Connector-java-3.0.12-bin.jar(可換更高版本)加到
Tomcat安裝目錄中的lib目錄下和工程中的lib目錄下。
通過以上三步,大部分時候還是起作用的,但有時會出現(xiàn)異常,因此不建議使用。
以上幾種方案在實踐中經(jīng)受了測試,方案一和二比較穩(wěn)定,方案三最好別用,同時只是進(jìn)行了大致地歸納,其中的哪些地方?jīng)]有必要或哪里欠妥還沒有去測試,望讀者進(jìn)行批評指正。