Tomcat本身并不具備提供數據源的能力,它需要借助其他的開源數據源(如DBCP)類實現。通過Tomcat提供的數據源,我們的程序中可以通過JNDI來訪問數據源。
<Resource name="jdbc/dataSource"
auth="Container"
description="DB Connection"
type="javax.sql.DataSource"
username="username"
password="password"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.0.10:1521:db"
maxActive="5" />
// 初始化
ContextContext ctx = new InitialContext();

// 獲取數據源,其中java:comp/env是Tomcat規定的,Tomcat提供的JNDI綁定都必須加該前綴
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/dataSource");

// 獲取數據庫鏈接
Connection conn = ds.getConnection();

// 一系列數據庫操作
... ...
下面以DBCP為例,簡介數據源的配置。
數據源的配置也有兩種方式,一種是通過修改Tomcat系統文件來配置全局數據源,一種是通過增加用戶的web部署文件來配置局部數據源。全局數據源的意義是所有部署在Tomcat內的web應用只要遵循規定都可以訪問的數據源,不建議此方式,可能會導致混亂。相對而言,增加用戶自己的web部署文件就比較合適一些,因為該數據源只針對某個web應用生效,其他web應用無法訪問該數據源,安全一些,也沒全局數據源那么混亂。
配置數據源需要數據源的jar文件,如DBCP數據源就需要在Tomcat的common/lib下增加一個commons-dbcp.jar文件,還需要commons-poo.jar和commons-collections.jar的支持,一般在Tomcat里都會有這三個jar文件,最好還是檢查一下。
在Tomcat的conf\localhost下創建自己的web部署配置文件,仿佛見《Tomcat中部署web應用的方式》,在Context元素下增加子元素,以Oracle數據庫為例,如:









程序中訪問此數據源的代碼:












上面介紹了局部數據源的配置方法,全局數據源的配置和這差不多,只不過要是將Resource標簽放在server.xml的<GlobalNamingResources>元素里。