代码改变世界

JDBC 配置Tomcat的连接池和数据源

2012-12-03 21:03  coffeescript  阅读(379)  评论(0编辑  收藏  举报

修改conf目录下的context.xml文件

<Context reloadable="true">

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    -->
    <!--MySql-->
    <Resource name="define your name" auth="Container" type="javax.sql.DataSource" 
        maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root"
        driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/your table"/>
</Context>

initialSize是Tomcat服务器启动后最初建立的连接数。

maxActive为连接池同一时间可分配的最大连接数,如果参数值是非正数,表示不作限制。

auth是验证方式。

maxIdle即连接池中可以保留的最大的空闲连接数量,大于此数量的空闲连接会被释放,负数表示不做限制。

minIdle为连接池中可以保留的最小的空闲连接数量,如果小于此数量,更多的空闲连接会被创建,"0"表示不创建。

通过下面的代码片段来通过数据源对象获得连接池中的数据库的连接对象:

Context context=new InitialContext();
DataSource ds=(DataSource)context.lookup("java:/comp/env/yournamehere");
Connection conn=ds.getConnection();

context是JNDI的上下文对象,类似于当前目录,调用这个对象的lookup()方法可以根据指定的JNDI的名字获取一个数据源对象.

注意:

这种方式获取的Connection对象在使用完后,必须显式调用该对象的close()方法,释放资源。即将当前的Connection对象再返回到连接池中,而不是真正的关闭其相应的到数据库的连接。