网站是用jsp做的,数据库是oracle 11g,windows2008系统,tomcat5.0.18web服务器,在本地测式没有任何问题,但放到外网服务器上的时候网站程序总是不定时与数据库断开连接,需要重新启动tomcat,这是怎么回事?程序写得应没什么问题,每一次打开数据库都做了close了,刚开始怀疑数据库的并发连接问题,修改后,问题依旧,断开的时候数据库服务是正常的,没有停。

解决方案 »

  1.   

    我最近也遇到这样的问题,JAVA做的系统,登陆系统两分钟不操作就断开连接。后来找到问题是系统连接池配置问题。
    我的TOMCAT和ORACLE都是安装在同一台PC SERVER上面的,连接池里面配置的是机器局域网的IP,改成LOCALHOST或者127.0.0.1就OK了。
    不知道你是不是这样的情况。
      

  2.   

    谢谢zhangchun_63,我也这样怀疑过,刚好我的情况和你一样,tomcat和oracle在同一台服务器上,但是我的数据库配置是这样的:
      <Resource auth="Container" name="jdbc/app" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/app">
    <parameter><name>factory</name><value>org.apache.commons.dbcp.BasicDataSourceFactory</value></parameter>
    <parameter><name>driverClassName</name><value>oracle.jdbc.driver.OracleDriver             </value></parameter>
    <parameter><name>url</name>
    <value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value>
    </parameter>
    <parameter><name>username</name><value>app</value></parameter>
    <parameter><name>password</name><value>app</value></parameter>
    <parameter><name>maxActive</name><value>20</value></parameter>
    <parameter><name>maxIdle</name><value>10</value></parameter>
    <parameter><name>maxWait</name><value>10000</value></parameter>
    </ResourceParams>
      

  3.   

    驱动程序最早用的是class12.jar,换过ojdbc14.jar,现在用ojdbc5.jar,都不能解决问题。
      

  4.   

    #2的配置看起来很正常,不过url我们用的是公司内网IP。
    所以我猜问题可能不是这里,可能是服务器所在机器防火墙或者网络连接有什么地方需要设置。
      

  5.   

    shiyiwan,谢谢你!windows2008服务器版可能是对应用程序的有控制,Vista就有这样的设置;也有可能是防火墙方面设置存在问题(如以前碰到Web服务器和数据库服务器不在同一台,就是因为防火墙设置导致不能连接),现在的情况是用一段后断,推测是累计或者动态条件导致的。
      

  6.   

    ....,我准备将Tomcat加为系统服务试看看。
      

  7.   

    发现oracle11G中,在init.ora中修改open_cursors等参数对已创建的实例不生效,用sysdba登陆后用以下语句查询:
    select *
     from v$open_cursor 
       where user_name = 'userName'
    发现max_open_cursors=300,
    执行:
    alter   system   set   open_cursors=8000 scope=both; 
    后成功修改,现继续监控中,帖子先结了,有回答的分摊。