前两天学习了tomcat的JNDI数据库连接池的配置,今天重新自己查看tomcat的官方英语文档再配置一遍,加深印象。
首先JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。用户可以根据需要按照相应的配置取得对应需要的服务。
我们知道,如果每次程序访问数据库建立一个连接,是很消耗数据库的资源的,当访问用户多了,这个问题更是显而易见。数据库连接池就是为数据库连接建立一个缓冲池,里面存有一定数量的数据库连接,当我们的程序需要连接数据库时,就直接从缓冲池中拿取,而不需要每次都与数据库进行连接,这样节省了内存的消耗也加快了建立连接的速度。
接下来我们就来配置一下。
首先我们打开tomcat关于JNDI配置的文档地址,如果你没有删除tomcat/webapps目录下自带的5个案例的话。
首先第一步:
Install Your JDBC Driver。安装驱动:installing the driver's JAR file(s) into the $CATALINA_HOME/lib directory。基本意思就是说把你的数据库驱动放在tomcat目录下的lib文件夹下。我用的是oracle,所有我把oracle数据库驱动ojdbc14.jar 直接拷贝在文件夹下的lib文件夹下。
接下来第二步官方文档说:
Declare Your Resource Requirements。声明你的资源请求:官方文档要我们这么配置:
<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 <Context>
configurartion for the web application.
</description>
<res-ref-name>
jdbc/EmployeeDB
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
按照要求,我是这么配置的:
第三步官方文档:
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();
我是这么配置的:
最后一步:
<Context ...>
...
<Resource name="jdbc/EmployeeDB"
auth="Container"
type="javax.sql.DataSource"
username="dbusername"
password="dbpassword"
driverClassName="org.hsql.jdbcDriver"
url="jdbc:HypersonicSQL:database"
maxActive="8"
maxIdle="4"/>
...
</Context>
同样,我们修改我们需要的参数:MaxActive:连接池的最大数据库连接数。设为0表示无限制。