本帖最后由 liuwei_blog 于 2010-11-29 15:50:49 编辑

解决方案 »

  1.   

    这一段没什么问题,关键你Exception都能看错,明明是不能创建连接Exception
    org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNestedException: Error preloading the connection pool你第一次调用肯定抛Exception,然后才开始创建连接,没等关闭呢,又调用,当然没问题了
      

  2.   

    数据库的事,你看看数据库的链接数是多少。我不清楚你数据库装到什么系统上了。如果是非windows环境,你看看swap情况如何,要是太小的话,调大点试试
      

  3.   

    swap 不小 100% 空闲
      

  4.   

    你看看sqlnet.ora 文件,有没有添加IP限制,监听日志里面有没有错误信息。
      

  5.   

    还有不知道你那边什么情况,plsql是否能连的上,如果plsql能连上,那你看看你的jdbc驱动有没有问题,最好用oracle安装目录里的
      

  6.   


    sqlnet.ora 里只有一句:
    #SQLNET.AUTHENTICATION_SERVICES= (NTS)listener.log 有错误日志:
    TNS-12518: TNS:listener could not hand off client connection
     TNS-12547: TNS:lost contact
      TNS-12560: TNS:protocol adapter error
       TNS-00517: Lost contact
        Linux Error: 32: Broken pipepl/sql developer 一直都能连上驱动使用oracle 安装目录下的 ojdbc14.jar 和 ojdbc14_g.jar 也不行
      

  7.   

    sqlnet.ora 里只有一句:
    #SQLNET.AUTHENTICATION_SERVICES= (NTS)
    还是注释掉的...........NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
    tcp.validnode_checking=no
    你把这两个加上试试
      

  8.   

    可以了,
    我把连接池换成c3p0了,看来c3p0真的比commons-dbcp好用
      

  9.   

    这个跟连接池的类型没多大关系,是你上面的配置<property name="maxActive"><value>600</value>       </property>,该参数设这么大,一个数据库的最大连接数估计早被你撑爆了,把该参数设小,设成100内应该没多大问题,ORACLE默认的连接数大小好象为150。