比如在一WEB应用中,连接池(连接池是通过JNDI取得)已经用光,这时程序想得到连接就必须等待,如果当时的情况十分紧急,程序必须得到一个连接马上对数据库操作,不能等待.那么这时应该怎么处理呢?我的想法是直接通过JDBC取得一个连接来对数据库进行操作.大家还有什么更好的方法吗?

解决方案 »

  1.   

    如果用了开源的连接池的话,没有你说的情况发生,当连接池中的连接没有了,那么当有程序取连接的时候他会new给他一个,并填满连接池。
      

  2.   

    你说的是DBCP之类吗.这种开源方法取得的连接池和用最原始的JNDI取得的连接池有什么区别?是不是一个是程序级的而JNDI是服务器级的?
      

  3.   

    最好优化你的SQL或者数据库表结构,如果数据量大就按照反规范化进行水平拆分或者垂直拆分,另外只能计算你们的业务高峰期调高数据库连接池的最大连接数
      

  4.   

    1 你确信你真的需要那么多并发连接吗? 也许你的程序有链接泄漏呢! 先排查或确认一下2 所有的连接池都支持最大连接数的设置,你可以增加那个配置3 确认你的数据库设置支持那个最大连接数,比如mysql, 默认的最大链接只有50个
      

  5.   

    不可能的吧,不管是开源的还是应用服务器上的连接池都是实现 DataSource 接口的,
    实际上 JNDI 获得的连接,在后台也是将 DataSource 绑在 JNDI 上来获得的。像 
    Tomcat 的 JNDI 数据源就是通过绑定 DBCP 的 DataSource 来实现的。用光的话应该有参数进行配置策略的,具体是等待呢,还是新增,可以参考一下应用服
    务器的说明。没有那么傻的,一般来说应用服务器上的连接池至少不会比开源的差。