zoukankan      html  css  js  c++  java
  • Tomcat配置连接池

     

     Tomcat配置DBCP连接池

    配置tomcat服务器的时候,使用到jndi;通过Context配置文件实现配置池对象,通过new initialConext()对象的lookup()获取到数据池对象,在通过ds获取connction对象

    我们在Java Web环境中使用DataSource时,通常不是自己去创建,而是通过在Tomcat中配置JNDI资源来完成。

    JNDI(Java Naming and Directory Interface),Java命名和目录接口。JNDI的作用就是:在服务器上配置资源,然后通过统一的方式来获取配置的资源。

    还记得在哪里可以写<Context>么?

    l  confserver.xml中,在<Host>元素中添加<Context>;

    l  还可以在confcatalinalocalhost目录下创建一个xml文件,也可以添加<Context>;

    l  还有confContext.xml文件中也可以添加<Context>;

    l  也可以在你的项目的META-INF目录下创建context.xml文件,在这个文件中添加<Context>元素!但这种方式与第2种是相同的!当你启动Tomcat时,Tomcat会自动把context.xml文件copy到confcatalinalocalhost目录下,并且用当前项目来重命名文件。

    <Context> 

        <Resource name="itcast[崔1] "

                         type="org.apache.tomcat.dbcp.dbcp.BasicDataSource"[崔2] 

                         factory="org.apache.naming.factory.BeanFactory"[崔3] 

                         username="root"  

                         password="123"  

                         driverClassName="com.mysql.jdbc.Driver"   

                         url="jdbc:mysql://127.0.0.1/mydb1"

                         maxIdle="3"

                         maxWait="5000"

                         maxActive="5"

                         initialSize="3"/>

    </Context> 

    配置好了资源后,就可以在当前项目中使用如下代码来获取资源了。

                  Context   cxt = new InitialContext(); [崔4] 

                  DataSource ds = (DataSource)cxt.lookup("java:/comp/env/itcast[崔5] ");

                  Connection con = ds.getConnection();

                  System.out.println(con);

                con.close();

    <Context>表示一个项目!在当前项目中都可以查找资源,但是如果没有启动Tomcat那么肯定是查找不到的。

    注意,在Tomcat中配置连接池时,说明这是由Tomcat来创建连接池对象,而连接池对象会去创建Connection!但是,Connection是由驱动实现的,这说明你需要向Tomcat提供MySQL的驱动Jar包!你必须把Jar放到Tomcat安装目录lib目录下

    还有DBCP连接池的Jar包,你也要放到Tomcat安装目录lib目录下!但是你可能已经发现了,在Tomcat安装目录lib目录下已经存在了tomcat-dbcp.jar。这说明Tomcat自带了dbcp的jar包!但是这个Jar包中的BasicDataSource类的包名为:org.apache.tomcat.dbcp.dbcp.BasicDataSource,而不在是org.apache.common.dbcp.BasicDataSource了。

    其实Tomcat还允许你使用默认配置的方式,这种方式默认使用的就是DBCP连接池!

    <Context> 

        <Resource name="itcast[崔6] "

                         type="javax.sql.DataSource"[崔7] 

                         username="root"  

                         password="123"  

                         driverClassName="com.mysql.jdbc.Driver"   

                         url="jdbc:mysql://127.0.0.1/mydb1"

                         maxIdle="3"

                         maxWait="5000"

                         maxActive="5"

                         initialSize="3"/>

    </Context> 

    2 Tomcat配置C3P0连接池

    其实配置的方法都是一样的,不过这里还是再给出一个模板吧,方便大家以后使用。

    <Context> 

        <Resource name="itcast"

                         type="com.mchange.v2.c3p0.ComboPooledDataSource"[崔8] 

                         factory="org.apache.naming.factory.BeanFactory"[崔9] 

                         user="root"  

                         password="123"  

                         classDriver="com.mysql.jdbc.Driver"   

                         jdbcUrl="jdbc:mysql://127.0.0.1/mydb1"

                         maxPoolSize="20"

                         minPoolSize   ="5"

                         initialPoolSize="10"

                         acquireIncrement="2"/>

    </Context> 

    注意,必须把c3p0相关jar包放到Tomcat安装目录lib目录下。当然,还有mysql驱动jar包也不要忘了。

    其实,你也可以自己写一个连接池,也可以配置到Tomcat中,然后通过JNDI去查找。


    资源的名称!在获取资源时需要使用这个名称。

    资源的类型

    Tomcat服务器提供的,用来加载资源的Bean工厂!

    创建JNDI上下文!在Tomcat启动后,Tomcat会向系统属性中添加相关配置信息,而InitialContext类会在系统属性中查找相关的配置信息!

    要查找的资源的名称,其中Java:/comp/env/是前缀,这是固定的,而后面的itcast是我们配置的资源的名字

    资源的名称!在获取资源时需要使用这个名称。

    只给出DataSource,而没有给出实现类,这时Tomcat会直接使用DBCP的BasicDataSource。而且这时连factory属性都不用再给出。

    类型指定为ComboPooledDataSource

    工厂不能省略

  • 相关阅读:
    Cocos2d JS 之消灭星星(二) 工具类开发
    Cocos2d JS 之消灭星星(三) 进入游戏过渡场景
    Cocos2d JS 之本地存储(localStorage)
    Cocos2d JS 之消灭星星(—) 游戏初始化场景的建立
    小程序的1024KB
    小程序来了(下篇)
    小程序来了(上篇)
    那些年,让我们一起着迷的Spring
    小程序之信息触手可及
    史诗手册!微信小程序新手自学入门宝典!
  • 原文地址:https://www.cnblogs.com/lulu638/p/4438873.html
Copyright © 2011-2022 走看看