项目运行一段时间后,cannot open connection
我的一个项目用的框架是spring1.2+hibernate3.1+struts1.2,应用服务器是webshpere,但是没有用websphere的连接池,用的是apache的dbcp。 在测试机上内部运行测试一段时间后,会报cannot open connection 错误,经分析,应该是并发连接数量不够用的缘故,觉得可能是apache的dbcp有问题,明天准备用websphere的连接池更换再试试。 但疑惑的是,我对数据库操作,都是通过spring 的hibernateTemplate来操作的,hibernateTemplate封装了对链接的关闭操作,事务用的是声明式事务,如果事务配置正确,则会在执行完事务后关闭链接;如果事务配置不正确,则会在执行完数据库操作之后关闭链接,更不存在事务问题,怎么会出现链接不够用的情况呢???如果是dbcp的问题,那使用spring+hibernate是否就不能用tomcat做应用服务器呢,因为tomcat的连接池用的就是dbcp啊?? 不知道哪位朋友遇到过这种问题并解决了这种问题,因为我在网上找到的都只是有人提出了这个问题,但是没有人能给出个解决方案,希望不吝赐教。 由于是测试机,所以在项目出现cannot open connection 错误,用户几分钟不做任何操作后,又可以重新操作,说明是连接池在达到了maxWait之后收回了connection,用户再操作时能够重新分配到connection,说明cannot open connection 错误的确是链接数量达到了连接池的maxActive所导致。 不知道有哪位朋友可以赐教这个问题,非常感谢 

解决方案 »

  1.   

    java不会,
    如果你能确定报错是由于java引起的,最好去java版问下。
    如果是数据库报的,你可以看看oracle目录下的network\log\listener.log 应该找到些问题
      

  2.   

    select * from v$session  看看不能连接的时候的session 情况
    show parameter session   查看你数据库设置的session 最大大小show parameter process   查看进程数大小
      

  3.   

    2楼上面那几句SQL不能执行啊?
      

  4.   


    v$session 要管理员权限
    show parameter session 
    用sqlplus 登陆执行
    或者用plsql/dev command 执行需要DBA 权限
      

  5.   

    如果是oracle的报错,一般都会有ORA-的提示,根据ora-的错误码来查找和解决问题,是一个不错的办法。
      

  6.   

    你的数据库processes参数设置小了吧
    改大点试试,还有相应的pga参数