使用tomcat自带的连接池

    技术2022-05-11  72

    网站开发都要用到数据库。简单的数据库连接每次都要重新连接数据库,从而导致访问速度变慢,连接池的出现就是为了解决这个问题的 ,而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。就这么多。使用数据库连接后记得释放。写的比较简单,有时间再来补充,^_^ 


    最新回复(0)