Tomcat的資料來源配置
Tomcat本身並不具備提供資料來源的能力,它需要藉助其他的開源資料來源(如DBCP)類實現。通過Tomcat提供的資料來源,我們的程式中可以通過JNDI來訪問資料來源。
下面以DBCP(Tomcat內建的)為例,簡介資料來源的配置。
資料來源的配置也有兩種方式,一種是通過修改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元素下增加子元素,以Mysql資料庫為例,如:
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="123456"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
characterEncoding=“GB2312&useUnicode=TRUE"/>
程式中訪問此資料來源的程式碼:
Context ctx=new InitialContext();
//初始化Context
DataSource ds
=ctx.lookup("java:comp/env/jdbc/TestDB");
//獲取資料來源,其中java:comp/env是Tomcat規定的,Tomcat提供的JNDI繫結都必須加該字首
Connection conn
=ds.getConnection();
//獲取資料庫連結
//一系列資料庫操作
Statement stmt
=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from newsinf");
while(rs.next())
...{
//............,
}
上面介紹了局部資料來源的配置方法,全域性資料來源的配置和這差不多,只不過要是將Resource標籤放在server.xml的<GlobalNamingResources>元素裡。