概括一下,大致分為四步:安裝驅動,填充context.xml,填充web.xml,編寫程序取得連接。通過一個小DEMO對這種配置方式有了一點了解,以tomcat6.0連接mysql5.0.8數據庫為例。
安裝驅動
下載與所要連接的數據庫版本對應的JDBC驅動程序,加入到應用的CLASSPATH。如果用tomcat部署,tomcat中最好也加上(筆者覺得好像沒必要加,可是不加的話會報錯……所以還是加了)。應該有辦法不加的,若有高手路過,請指點。
填充context.xml
這里就像是做聲明樣的,把你要連接時的相關屬性定義在里面。我的配置如下:
<Context crossContext="true" docBase="E:/workspace/myeclipse-workspace/WebDevDemo/WebRoot" path="/webdemo">
<Resource name="jdbc/EmployeeDB"
auth="Container"
type="javax.sql.DataSource"
username="root"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/employee"
maxActive="8"
maxIdle="4"/>
</Context>
填充web.xml。我的配置:
<resource-ref>
<res-ref-name>jdbc/EmployeeDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
編寫程序取得連接。俺的程序:
Context ctx = null;
Context context = null;
DataSource dataSource = null;
Connection conn = null;
PreparedStatement statement = null;
ResultSet rs = null;
try {
ctx = new InitialContext();
context = (Context) ctx.lookup("java:comp/env");
dataSource = (DataSource)context.lookup("jdbc/EmployeeDB");
} catch (NamingException e) {
e.printStackTrace();
}
try {
conn = dataSource.getConnection();//獲得連接
// 取數據
statement = conn.prepareStatement(SQL_FIND_ALL_SALARY_RECORDS);
rs = statement.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
按照以上的方式就能在tomcat里以配置的形式連接數據庫,比我們把所有的連接屬性都定義在類里要方便多了。由於公司用的還是5.0版的tomcat,所以筆者也用這個進行了實驗,在操作上與6.0有兩處不同:
(1)在上面的第一步,加載驅動時。若是5.0版的,驅動的JAR包要放在%CATALINA_HOME%\common\lib下面;若是6.0版的,驅動的JAR包要放在%CATALINA_HOME%\lib下面。
(2)在上面的第二步,聲明連接的方式有所不同。5.0版比較復雜點,需要像下面這樣配:
<Context crossContext="true" docBase="E:/workspace/myeclipse-workspace/WebDevDemo/WebRoot" path="/webdemo">
<Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/EmployeeDB">
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/employee</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>8</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>4</value>
</parameter>
</ResourceParams>
</Context>
效果一樣,只是寫法不同,6.0版本對配置文件做了簡化,所以看起來清爽一些。呵呵,這貌似就是軟件的升級哦