tomcat中应用JNDI配置DBCP连接池。

目录

 一、tomcat/conf/context.xml中

二、在tomcat/conf/server.xml中的 GlobalNamingResources 下

三、总结:


本文是对DBCP配置参数的说明与记录。

 一、tomcat/conf/context.xml中

进行如下配置。调用时,通过JNDI名称进行调用。






    
    WEB-INF/web.xml

    
    

    
    

	 

      	//跟dbcp的区别是这里 url -》 jdbcUrl

maxIdle值与maxActive值应配置的接近。

因为,当连接数超过maxIdle值后,刚刚使用完的连接(刚刚空闲下来)会立即被销毁。而不是我想要的空闲M秒后再销毁起一个缓冲作用。这一点DBCP做的可能与你想像的不一样。

若maxIdle与maxActive相差较大,在高负载的系统中会导致频繁的创建、销毁连接,连接数在maxIdle与maxActive间快速频繁波动,这不是我想要的。

高负载系统的maxIdle值可以设置为与maxActive相同或设置为-1(-1表示不限制),让连接数量在minIdle与maxIdle间缓冲慢速波动。

注意事项:

context.xml是作为Context配置的默认配置(Catalina容器级默认配置),即每个Context进行初始化时(不存在Host级默认配置和configFile的情况下),context.xml的配置内容会被每个Context继承,故会拥有多分拷贝。

所以,context.xml是作为所有应用的通用配置来进行配置的,故需要谨慎配置,否则会导致数据库的连接池浪费以及堵塞。

二、在tomcat/conf/server.xml中的 GlobalNamingResources 下

进行如下配置


    
	
  

然后在context.xml添加ResourceLink配置。




    
      
                             
    WEB-INF/web.xml
    ${catalina.base}/conf/web.xml

   

这样配置,所有应用共享一个全局配置。

注意事项:因为在server.xml中配置全局的数据源,故是在tomcat启动时就进行加载的,所以要添加jndi对应服务的jar包。此处我们配置的连接池使用的是MySQL的驱动,故在要tomcat的lib下添加mysql驱动jar包(mysql-connector-java-XX.jar)。(容器的启动时无法读取应用下的lib,参见Tomcat类加载器的实现)

 

三、总结:

(在数据库能正常提供服务的前提下)

1、context.xml的单独配置(20个单独的连接,5个应用):所有应用单独使用自己的配置,负载能力有限,但能保证自己提供有限的服务,不受其他应用影响。

2、server.xml全局配置(100个共享连接):所有应用共享,增加负载能力,但会因为其中一个应用访问量大,导致其他应用无法访问。

两种方式各有利弊,按需配置(不管如何配置,他们最终依然会受制于数据库提供连接池服务的能力。)

 

DBCP与C3P0的区别:

tomcat中应用JNDI配置DBCP连接池。_第1张图片

参考文献:https://elf8848.iteye.com/blog/1931778

https://blog.csdn.net/meandmyself/article/details/49863225 removeAbandoned的说明

https://baike.baidu.com/item/c3p0/3719378?fr=aladdin

https://www.cnblogs.com/xdp-gacl/p/4040103.html

你可能感兴趣的:(中间件,#,Tomcat,DBPC,tomcat,JNDI,连接池)