• 访问项目 alread closed的解决办法


    问题描述:
    正常登录系统,不操作,过20分钟后,超时登录浏览器卡死问题(这时用别的浏览器打开时能正常登录)

    环境:tomcat与数据库服务器不在同一个网段。

    分析
    出错的原因是,获取数据库连接时超时,默认需要等20分钟后才返回数据数据库连接超时错误,导致这个期间浏览器卡死。

    解决方案
    方案一:修改tomcat中数据库的连接参数
    原因:
    在长时间没有访问tomcat后,数据库连接已经失效,连接池因为没有检测,所以认为连接有效,导致连接出错。避免这种错误的方法是设置连接有效查询sql语句。设置后,连接池会使用该sql语句测试连接是否有效,如果无效,会重新建立连接。

    解决方案:

    设置方法为:在%JUSTEP_HOME%apache-tomcatconfcontext.xml中的节点中增加属性validationQuery
    mysql数据库:

    <Resource name="jdbc/cloud" type="javax.sql.DataSource" maxActive="100" maxIdle="30" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/cloud" username="root" password="x5" validationQuery="select 1"/>

    SQLServer数据库:
    在server.xml中的节点中增加属性validationQuery=”select sysdate from dual;”。例如:

    <Resource name="system" auth="Container" type="javax.sql.DataSource" driverClassName="net.sourceforge.jtds.jdbc.Driver" url="jdbc:jtds:sqlserver://127.0.0.1:1433/x5_1900" username="sa" password="sa" maxActive="10" maxIdle="5" validationQuery="select sysdate from dual;"/>

    oralce示例

    <Resource name="reg" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" url="xxxx" username="xx" password="xx" maxActive="10" maxIdle="5" validationQuery="select 1 from dual"/>

    其中:
    如果jdbc的版本<10.1.0.5时, 使用oracle.net.READ_TIMEOUT=5000;
    如果jdbc的版本>=10.1.0.5时,使用oracle.jdbc.ReadTimeout=5000;
    其中的5000单位是秒,可以结合自己的实际需求调整大小。

    方案二:调整网络
    使得tomcat与数据库服务器在同一个网段内。
    ps:本文章节选自Wex5论坛

    -------------------------------------------------------------------------------------------------------------------------------------------------------- 目前的博客发表主要以记录笔记为主,可能部分内容有些浅显,望各路大牛勿喷,请您雅正
  • 相关阅读:
    百度百科目录导航树小插件
    Docker for windows部署mysql挂载数据卷
    ASP.NET CORE 2.0 不小心踩得坑
    获取MVC中Controller下的Action参数异常
    DataTableToList
    svn禁止提交的文件
    plush
    解决端口号被占用的问题
    vue-router
    vue-layer
  • 原文地址:https://www.cnblogs.com/404code/p/8419406.html
Copyright © 2020-2023  润新知