JDBC Data Sources 的配置和Generic JavaBean Resources的配置基本一样。
1. 安装驱动:
把jar包放到$CATALINA_HOME/common/lib目录下
2. 声明资源需求,在web.xml文件中添加如下信息:
<resource-ref>
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the server.xml file.
</description>
<res-ref-name>
jdbc/EmployeeDB
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
所有资源工厂的root context是java:comp/env,这里声明了一个subcontext:jdbc。
3. 对应的 .xml文件配置:
<Context ...>
...
<Resource name="jdbc/EmployeeDB" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/EmployeeDB">
<parameter>
<name>username</name>
<value>dbusername</value>
</parameter>
<parameter>
<name>password</name>
<value>dbpassword</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.hsql.jdbcDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:HypersonicSQL:database</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>8</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>4</value>
</parameter>
</ResourceParams>
...
</Context>
4. 资源引用的典型用法(在程序中使用配置好的资源)
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)
envCtx.lookup("jdbc/EmployeeDB");
Connection conn = ds.getConnection();
... use this connection to access the database ...
conn.close();
参数说明:
· driverClassName – JDBC驱动类的全名。
· maxActive -同一时刻连接池中最大动态连接数。
· maxIdle - 同一时刻连接池中最大闲置连接数。
· maxWait - 当连接池中没有可用连接时,连接池最长等待时间。超时的话,连接池将返回一个异常。
· password - 数据库用户密码
· url - 数据库连接URL
· user - 数据库用户名
· validationQuery - 提供给连接池,用于验证连接的SQL语句。如果指定的话,该语句必须是至少返回一行的select语句。