服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 专题栏目 > Tomcat专题 > 查看文档

使用tomcat自带的连接池

网站开发都要用到数据库。简单的数据库连接每次都要重新连接数据库,从而导致访问速度变慢,连接池的出现就是为了解决这个问题的 ,而Tomcat自己也提供了这种机制。好,我们来看如何使用Tomcat自身提供的连接池机制来进行数据库连接,(补充说明一点:你使用的Tomcat的版本要是5.0.x或者更高,以前的版本,你还是需要在server.xml里配置使用连接池)这里我们以oracle9i为例子:

1。 就像其他的数据库连接一样,你需要把Oracle的驱动程序复制到Tomcat的common\lib目录下.

2。修改Tomcat下你的应用配置文件,这个文件放在Tomcat的conf\Catalina\localhost目录下,我们举例的文件文件名是bulletinSystem.xml,这个文件的内容如下:

-----------------------------------------------
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="E:\JBuilderProject\eshop\bulletinSystem" path="/bulletinSystem" reloadable="true" workDir="E:\JBuilderProject\eshop\Tomcat\work\bulletinSystem">

<Resource name="jdbc/eshop/bulletinSystem" auth="Container" type="javax.sql.DataSource" />
<ResourceParams name="jdbc/eshop/bulletinSystem">
      <parameter>
        <name>factory</name>
        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@192.168.13.4:1521:hong</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>eshop</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>eshop</value>
      </parameter>
      <parameter>
        <name>maxWait</name>
        <value>5000</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>4</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>2</value>
      </parameter>
      <parameter>
        <name>validationQuery</name>
        <value>select * from dual</value>
      </parameter>
    </ResourceParams>

</Context>
---------------------------------------------
◎  Resource的name属性定义了数据源名(绿色的字),在配置其参数和得到数据连接对象时要使用到,要求唯一。这个名字一般要用jdbc/开头,因为使用的时候查找连接池数据源使用的前缀为 java:comp/env/jdbc,见4。
◎  Resource元素里面的参数:
      #factory:定义了数据源工厂,用于产生和管理连接池对象,它是由Tomcat提供的。
      #driverClassName:定义了驱动程序的名称。对于不同类型的数据库和不同类型的驱动程序,该值不同。本例中使用的是Oracle的数据库。
      #url :建立数据连接时使用的url字符串。不同的数据库有不同的连接方法,该值就不同。在这个参数里设置你要访问的数据库的ip和数据库服务名。
      #username:访问数据库的用户名。
      #password:访问数据的密码。
      #maxWait:建立数据库连接时的时间等待。超时就抛出异常。
      #maxActive:同一时刻最大连接数。这个要考虑机器的负载能力。
      #maxIdle:最大空闲连接数。空闲时间所需要保持的最大连接数。
      #validationQuery:这里定义一个可以执行的查询语句。主要作用是被连接池用来检测一个连接是否有效,因为TCP/IP连接并不会一直保持的。指定的validationQuery必须非常简单,并且执行效率要很高;本例中使用了Orale的一个虚拟对象dual,它在其他数据库中是不存在的。

3。修改你的应用的web.xml,就是应用下的WEB-INF/web.xml,添加代码如下,添加在</web-app>之前,(^_^,实践表明,前面配置好了,不添加这段配置也连接池可以用)

--------------------------------------------  
<resource-ref>
      <description>Oracle Datasource for edushop</description>
      <res-ref-name>jdbc/eshop/bulletinSystem</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
--------------------------------------------

4。在你的应用下使用如下代码获得数据库连接:

--------------------------------------------
import java.sql.*;
import javax.naming.*;
import javax.sql.*;

Context initCtx = new InitialContext();
Context envCtx=(Context)initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/eshop/bulletinSystem");
Connection conn=ds.getConnection();
--------------------------------------------
也可以直接使用:
DataSource ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/eshop/bulletinSystem");


4。就这么多。使用数据库连接后记得释放。写的比较简单,有时间再来补充

扫描关注微信公众号