一Tomcat简介
Tomcat是Apache Jakarta的子项目之一是Sun公司推荐的JSPServlet容器作为一款优秀的应用服务器Tomcat提供了数据库连接池SSLProxy等许多通用组件功能其中连接池是以上版本的新增功能应用非常广泛
二该文配置环境
Tomcat + jdk + Sql Server + Win AS
三对Tomcat的DBCP配置
这里将连接池置于tomcat的工程目录中的blog子文件夹(新建)下JNDI名设为jdbc/blog数据库服务器IP为localhostSID为blog配置步骤如下
第一步配置serverxml:
在serverxml中找到
<! Tomcat Root Context >
<!?
<Context path= docBase=ROOT debug=/>
>
将其改为
<Context path=/blog docBase=blog debug= reloadable=true>
<Resource name=jdbc/blog auth=Container type=javaxsqlDataSource/>
<ResourceParams name=jdbc/blog>
<parameter>
<name>factory</name>
<value>monsdbcp
BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>commicrosoftjdbc
sqlserverSQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver
://localhost:;databaseName=blog</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxActive</name>
<value></value>
</parameter>
<parameter>
<name>maxIdle</name>
<value></value>
</parameter>
<parameter>
<name>maxWait</name>
<value></value>
</parameter>
</ResourceParams>
</Context>
参数说明
Resource项
<Resourcename=jdbc/blog
auth=Container
type=javaxsqlDataSource/>
Resource项(即连接池的DataSource对象)有个属性nameauthtypename项是JNDI的名称定义程序通过JNDI才能找到此对象这里取名jdbc/Sblogauth项即连接池管理权属性这里取值Container申明为容器管理type项即对象的类型这里取值javaxsqlDataSource申明为数据库连接池
在接下来的域内容里包含四个参数userpassworddriverClassNamedriverName依次为数据库的用户名密码JDBC驱动和数据库地址
factory参数
<parameter>
<name>factory</name>
<value>monsdbcp
BasicDataSourceFactory</value>
</parameter>
即基础对象工厂这里取值monsdbcpBasicDataSourceFactory即DBCP自带的工厂也可以用别的
DriverClassName参数
<parameter>
<name>driverClassName</name>
<value>commicrosoftjdbc
sqlserverSQLServerDriver</value>
</parameter>
即数据库的JDBC驱动名称具体值为
Sql Server : commicrosoft
jdbcsqlserverSQLServerDriver
首先要下载安装sqlserverjdbc驱动然后将其lib下的三个jar文件放到tomcat/common/lib下
MySql
orggjtmmmysqlDriver
MySql的JDBC驱动包mmmysqljar
Oracle oraclejdbcdriverOracleDriver
Oracle的JDBC驱动包名叫classesjar一般位于Oracle安装目录下的ora\jdbc\lib目录下初始扩展名为ZIP需要手工把classeszip改名为classesjar并放到tomcat/common/lib下oraclejdbcdriverOracleDriver此类由classesjar提供
url参数
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver:
//localhost:;databaseName=blog</value>
</parameter>
即数据库的地址(不同的数据库其地址都不相同)
username参数
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
即连接数据库的用户名
password参数
<parameter>
<name>password</name>
<value>**</value>
</parameter>
即连接数据库的密码
maxActivemaxIdle和maxWait参数
<parameter>
<name>maxActive</name>
<value></value>
</parameter>
<parameter>
<name>maxIdle</name>
<value></value>
</parameter>
<parameter>
<name>maxWait</name>
<value></value>
</parameter>
maxActive是最大激活连接数这里取值为表示同时最多有个数据库连接maxIdle是最大的空闲连接数这里取值为表示即使没有数据库连接时依然可以保持空闲的连接而不被清除随时处于待命状态MaxWait是最大等待秒钟数这里取值表示无限等待直到超时为止也可取值表示秒后超时
第二步配置webxml
打开webapps/ROOT/WEBINF下webxml加入如下内容
<resourceref>步为营
<description>SqlServer
Datasource example</description>
<resrefname>jdbc/blog</resrefname>
<restype>javaxsqlDataSource</restype>
<resauth>Container</resauth>
</resourceref>
第三步配置tomcat(添加类)
将Microsoft SQL Server Driver for JDBC\lib目录下的三个jar文件拷贝到Tomcat安装目录的common\lib下配置完成
四测试代码
数据库如下
新建一个名为blog的数据库在里面创建一个表格
Create table test(id varchar()
name varchar());
写一个jsp文件(testdbjsp)将其置于webapps/ROOT目录下打开tomcat运行该页面进行测试页面testdbjsp的内容如下
<%@ page contentType=
text/html;charset=GBK%>
<%@ page import= javasql* %>
<%@ page import= javaxnaming* %>
<%
try{
Context initCtx =
new InitialContext();
Context ctx = (Context)
initCtxlookup(java:comp/env);
//获取连接池对象
Object obj =
(Object) ctxlookup(jdbc/blog);
//类型转换
javaxsqlDataSource
ds = (javaxsqlDataSource)obj;
Connection conn = dsgetConnection();
Statement stmt = conncreateStatement();
String strSql =
insert into test(idname)
values(′′′fany′);
stmtexecuteUpdate(strSql);
strSql = select idname from test ;
ResultSet rs = stmtexecuteQuery(strSql);
if(rsnext()){
outprintln(rsgetString());
outprintln(rsgetString());
}
}catch(Exception ex){
exprintStackTrace();
throw new SQLException
(cannot get Connection pool);
}
%>
运行tomcat打开浏览器输入正常情况下会在页面上看到 fany输出