从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路径。