Tomcat中數據源配置詳細說明

1.前文

        很多年時間沒使用過Tomcat了,除了還記得它的存在外,其餘的幾乎忘記完了!最近因工作變更不得不重拾這方面的技術。爲了在其上配置數據源,在網上搜了很多資料。也都一一嘗試過,其中有嘗試成功的,也有嘗試失敗的。爲方便以後的工作,特作此記錄筆記!

        通過在網上查到的資料,在Tomcat中配置數據源主要有兩種思路:

        1.全局數據源:這類數據源一旦配置後,可以被部署在該Tomcat下的所有web應用所使用。

        2.局部數據源:這類數據源在配置後,只能被指定的web應用使用。

        本筆記主要描述局部數據源的配置方式。

2.版本說明

apache-tomcat-6.0.41

3.配置方式

        在Tomcat中配置數據源主要有兩種途徑:

        1.將數據源配置在Tomcat的%Tomcathome%/conf/server.xml文件中

        2.將數據源配置在web應用的WebRoot/META-INF/context.xml文件中(如果應用中沒有此文件,可手動創建)

        兩種配置方式主要區別在於,使用第一種配置方式的話,一旦應用部署在其他web容器中,就需要重新配置,而第二種配置方式,可已隨時移植到其他Tomcat容器中,如果是其他廠商的容器(例如weblogic或者WAS容器),則需要更改配置。

3.1在server.xml文件中配置

3.1.1更改server.xml文件

該文件在%Tomcathome%/conf/目錄中。

在<host>節點內加上如下內容:

<Context path="/webtest" debug="5" reloadable="true" crossContext="true">
    <Resource 
        auth="Container" 
<pre name="code" class="html">        description="mysql_datasource" 
	name="jdbc/mysqltest"
	password="zhendao" 
	username="zhendao" 
	type="javax.sql.DataSource"
	driverClassName="com.mysql.jdbc.Driver"
	url="jdbc:mysql://192.168.2.120:3306/testdb"  
    />
</Context>


需要注意的是:

        1.配置內容一定要放在<host>節點內。筆者在網上查找資料時,看見有文章說的是配置在<host>節點外,但是筆者沒有嘗試成功,直到將配置內容放在<host>內(若有哪位朋友在host節點外配置成功的,請分享下!)

        2.其中的path="/webtest"是web應用在%tomcathome%/webapps下的應用名。

        3.driver和url視不同的數據庫而不同,這個應該是地球人都知道的事了。

3.1.2更改web.xml文件

筆者改的是應用中的web.xml文件(網上有資料說可以更改與server.xml文件同目錄下的web.xml文件,不過因工作時間關係,筆者沒有嘗試過,等有空嘗試以後再補上)

在web.xml文件中增加如下內容:

<resource-ref>
    <description>mysql_datasource</description>
    <res-ref-name>jdbc/mysqltest</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

3.1.3引入數據庫依賴的jar包

筆者使用的是mysql數據庫,並且是將jar放在web應用的lib目錄中。

3.2配置context.xml文件

3.2.1更改context.xml文件

在web應用的WebRoot/META-INF目錄下的context.xml文件中添加如下內容(若沒有該文件,可手動創建):

<Context>
    <Resource 
        auth="Container" 
        description="mysql_datasource" 
	name="jdbc/mysqltest"
	password="zhendao" 
	username="zhendao" 
	type="javax.sql.DataSource"
	driverClassName="com.mysql.jdbc.Driver"
	url="jdbc:mysql://192.168.2.120:3306/zhendaodev"  
    />
</Context>

當所有配置完成後,在第一次啓動Tocam時,Tomcat會自動加載context.xml文件,並在%Tomcathome%/conf/Catalina/localhost目錄下生成以後與web應用同名的xml文件,打開該文件會發現,其內容與配置的context.xml中的內容一樣。

3.2.2更改web.xml文件

更改web應用中的web.xml文件,加入如下內容:

<resource-ref>
    <description>mysql_datasource</description>
    <res-ref-name>jdbc/mysqltest</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

3.2.3引入數據庫依賴的jar包

筆者使用的是mysql數據庫,並且是將jar放在web應用的lib目錄中。

到此在Tomcat中配置數據源的兩種方式就結束了。上述兩種在Tomcat中配置數據源的方式,都是在筆者反覆測試成功後做的筆記,若有朋友按照筆者上述的方式配置數據源不成功,請先檢查Tomcat版本(筆者查的資料中有說因爲Tomcat版本的不同,配置方式也有所不同)、配置中細節是否正確、是否引入了數據庫依賴的jar包。

最後補充一點:上述兩種配置方式若同時使用,Tomcat會默認使用第一種配置的數據源,因爲此時在%Tomcathome%/conf/Catalina/localhost目錄下沒有生成與web應用同名的xml文件。

4.Tomcat多數據源配置

多數據源配置是指爲同一個web應用配置兩個或兩個以上的數據源。

配置方式與單數據源配置方式一樣,不同的是配置了多個<Resource>節點和<resource-ref>節點,例如:

server.xml文件中(context.xml文件中也是一樣的處理方式):

<Context path="/webtest" debug="5" reloadable="true" crossContext="true">
    <Resource 
	auth="Container" 
	description="mysql_datasource_120" 
	name="jdbc/mysqltest"
	password="zhendao" 
	username="zhendao" 
	type="javax.sql.DataSource"
	driverClassName="com.mysql.jdbc.Driver"
	url="jdbc:mysql://192.168.2.120:3306/dbtest"  
    />
    <Resource 
	auth="Container" 
	description="mysql_datasource_localhost" 
	name="jdbc/mysqlhost"
	password="zhendao" 
	username="zhendao" 
	type="javax.sql.DataSource"
	driverClassName="com.mysql.jdbc.Driver"
	url="jdbc:mysql://localhost:3306/dbtest"  
    />
</Context>

web.xml文件中:

<resource-ref>
    <description>mysql_datasource_120</description>
    <res-ref-name>jdbc/mysqltest</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
  
<resource-ref>
    <description>mysql_datasource_localhost</description>
    <res-ref-name>jdbc/mysqlhost</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章