從tomcat5.5開始,內置了DBCP數據源的實現。tomcat數據源提供兩種配置方式,兩種數據源的訪問范圍不同,
1.全局數據源:顧名思義在tomcat應用下的所有web都可以訪問。
2.局部數據源:適用單個web應用
★★? 不管以那種方式都得提供特定數據源的jdbc驅動。
此處用的mysql. 將mysql驅動包放到%TOMCAT_HOME%/lib中,web應用中也需要驅動包。
★★? 全局數據源配置方法:
1.%TOMCAT_HOME%/conf/server.xml
? <GlobalNamingResources>???
???? <Resource name="jdbc/dstest" auth="Container"?? type="javax.sql.DataSource"?? driverClassName="com.mysql.jdbc.Driver"?? url="jdbc:mysql://localhost:3306/javaee"?? username="root" password="root" maxActive="5"?? maxIdle="2" maxWait="10000"/>
? </GlobalNamingResources>
2.%TOMCAT_HOME%/conf/context.xml
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<ResourceLink name="jdbc/dstest"? type="javax.sql.DataSource"? global="jdbc/dstest"/> <!--全局數據源-->
<Context docBase="D:\workspace2\javaee\web" path="/javaee" reloadable="true"/>? <!--配置web路徑-->
</Context>
★★? 局部數據源配置:<推薦>
1.自定義web部署文件,配置數據源:
新建%TOMCAT_HOME%/conf/Catalina/localhost/javaee.xml? 新建的名字要與應用名一致,不一致的話tomcat啟動時會出異常!
javaee.xml<已配置web路徑,下面會介紹>:
<?xml version="1.0" encoding="GBK"?>
<Context docBase="D:\workspace2\javaee\web" privileged="true">?
<!-- 其中name指定數據源在容器中的JNDI名?
driverClassName指定連接數據庫的驅動
url指定數據庫服務的URL?
username指定連接數據庫的用戶名?
password指定連接數據庫的密碼?
maxActive指定數據源最大活動連接數?
maxIdle指定數據池中最大的空閑連接數
maxWait指定數據池中最大等待獲取連接的客戶端? -->
<Resource name="jdbc/dstest" auth="Container"?? type="javax.sql.DataSource"? driverClassName="com.mysql.jdbc.Driver"?? url="jdbc:mysql://localhost:3306/javaee"?? username="root" password="root" maxActive="5"?? maxIdle="20" maxWait="10000"/>????
<!--<Context docBase="D:\workspace2\javaee\web" path="/javaee" reloadable="true"/>-->
</Context>
若javaee.xml中Content 不加docBase="D:\workspace2\javaee\web",則需要配置web應用所在路徑。???
1.可配置在javaee.xml文件中,添加一段:??
<Context docBase="D:\workspace2\javaee\web" path="/javaee" reloadable="true"/>
2.可配置在 %TOMCAT_HOME%/conf/context.xml 中:
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Context docBase="D:\workspace2\javaee\web" path="/javaee" reloadable="true"/>
</Context>
注:
在tomcat的conf/Catalina/localhost目錄下配置項目路徑,tomcat啟動是會直接根據配置去加載項目。????? docBase:應用所在路徑web目錄。????
path:訪問的相對路徑。????
reloadable="false"表示當應用程序中的內容發生更改之后服務器不會自動加載,這個屬性在開發階段通常都設為true,方便開發,在發布階段應該設置為false,提高應用程序的訪問速度。
★★? 總結:(全局數據源&&局部數據源)???? 1.都需要數據庫驅動包。???? 2.都需要指明項目路徑。
★★? 步驟:?????????
全局數據源:需要在server.xml中的GlobalNamingResources中配置數據源,在context.xml中引用數據源。并配置web路徑。??????
局部數據源:可在/conf/localhost/新建與web應用名同名的xml文件配置數據源。
配置web路徑有三種方式:??????
1.在新建的xxx.xml中添加docBase屬性指明應用所在路徑。如:
<Context docBase="D:\workspace2\javaee\web" privileged="true">??????
2.在新建的xxx.xml中添加<Context docBase="D:\workspace2\javaee\web" path="/javaee" reloadable="true"/>??????
3.在/conf/context.xml中添加<Context docBase="D:\workspace2\javaee\web" path="/javaee" reloadable="true"/>????????????
第一種之所以沒有配Path,是因為這種方式服務器會使用.xml的名字作為path屬性的值。所以不需要配置path路徑。