当前位置: 首页 > 知识库问答 >
问题:

Grails 3.3.3 war部署在tomcat 8.5版本上,具有封闭的jdbc连接

穆宾白
2023-03-14

当我在容器中运行war文件时,服务器端断开的连接(默认空闲超时为8h)会导致异常(根本原因:连接已关闭/向服务器发送的最后一个成功包是在0ms前发送的,或者是一个表示

问题1)当添加jdbc-tomcat池作为依赖在build.grade运行时"org.apache.tomcat: tomcat-jdbc"重新连接到断开连接的"除了主"数据源(下面的数据源)不尝试.无论这些属性:数据源:pooled: true jmx导出:true driverClassName:com.mysql.jdbc.驱动程序
方言:org.hibernate.dialect.MySQL5InnoDBDialect属性:初始化大小:2#连接池大小maxActive: 10 minIdle: 0 maxIdle: 10删除放弃超时:120#免费连接使用的石英作业删除放弃:true validationQuery: SELECT 1测试借用:true max等待:10000 maxage: 600000 timeBetweenEvictionRunsMillis: 5000 minEvictableIdleTimeMillis: 60000 validationQueryTimeout: 3 validationInterval: 15000 testWhileIdle: true testOn返回:false jdbcIntercep

所以,我从gradle中删除了tomcat jdbc,并将其放在每个url之后?自动重新连接=true。尽管如此,一些特性仍然会产生影响。属性:initialSize:2#连接池大小maxActive:20 minIdle:2 maxIdle:20上述值导致在使用20次连接(顺序,而不是并行)的闭包内调用20次后,第21次连接失败。在整个过程中,观察mariadb侧的开放连接,有零个或一个并发连接。移除属性后,它工作了。当连接池未加载时,为什么该值会影响?

Tomcat自带了自己的Tomcat jdbc jar,这可能会有所不同。是否需要在内部版本中将类型更改为“提供”。等级,就像tomcat本身一样?

问题2)是,网站发现,即也在这个论坛中,但grails留档本身也指向https://grails.org/deployment.文档在部署到那里记录的容器时提到了警告...但是当我注册时,我没有收到确认电子邮件,页面转发到https://grails.org/unauthorized.在我看来好像注册被破坏了。有没有电子邮件联系方式-找不到。

我只是不敢相信,我花了这么长时间在Web容器中拥有一个普通的池。在旧容器版本中,事情也很顺利

共有1个答案

夏季萌
2023-03-14

找到了。这是由于3个问题:

>

  • 必须提供tomcat-jdbc的gradle依赖类型并且不编译以避免冲突(tomcat安装的lib部分)

    正在应用中。“dataSource:”下的yml(和本地文件重载应用程序内容。yml)属性,用于池,未被其他数据源继承(定义见锚定“datasources:”)

    如果操作未在removeAbandonedTimeout:60(秒)内完成,则连接会被拉回,从而触发连接故障异常。增加了价值。不幸的是,由于removeAdbandoned设置为true,所以它是不可见的,但并没有设置为true。

  •  类似资料:
    • SQL server处于混合模式,其在本地机器中。我的连接字符串是jTDS jdbc:jtds:sqlserver://machineName:1433;databaseName=db;integratedsecurity=true 堆栈跟踪是 com.microsoft.sqlserver.jdbc.sqlserverException:用户“username”登录失败。在com.microso

    • 我正在实现一个TCP堆栈,并且遇到了半关闭连接的问题。 我的实现充当服务器端。客户端建立连接,然后发送一些数据,然后发送“FIN”消息。然后,服务器确认来自客户端的数据,发送自己的一些数据,然后才关闭其一半的连接(发送“FIN”)。 问题是,客户端没有确认服务器在半封闭连接上发送的数据,也没有确认其最终的“FIN”消息。根据netstat,客户端处于FIN_WAIT2状态。在服务器不发送任何数据的

    • 我一直在试图理解java中嵌套类的机制。 考虑以下代码: } 我知道内部类是编译器的一种现象,虚拟机不知道它们。内部类被翻译成带有$分隔外部和内部类名的常规类文件。 为了更详细地理解这种机制,我尝试使用javap-p命令反汇编在java版本1.8中编译的类文件。 我得到了以下结果:OuterClass: 内部类: 在这里我们可以看到编译器通过构造函数将外部类的引用传递给内部类,以便它可以评估外部类

    • 本文档介绍如何在 Kubernetes 上部署 TiDB 集群企业版及相应的企业版工具。TiDB 企业版具有以下特性: 企业级最佳实践 企业级别服务支持 全面加强的安全特性 前置条件 TiDB Operator 部署完成。 部署方法 目前 TiDB Operator 的企业版与社区版部署的差异主要体现在镜像命名上。相比于社区版,企业版的镜像都会多一个 -enterprise 后缀。 spec:

    • 问题内容: 我们使用JDBC的标准代码部分是… 问题1:使用连接池时,是否应该在最后关闭连接?如果是这样,合并的目的就不会丢失吗?如果不是,那么DataSource如何知道何时释放Connection的特定实例并可以重用?我对此感到有些困惑,任何指针都表示赞赏。 问题2:以下方法是否接近标准?看起来像是尝试从池中获取连接,并且如果无法建立DataSource,请使用老式的DriverManager

    • 使用Docker,您可以将一个映像部署在几个或多或少易失性的标记下,例如: 哈希 v1 v1.1 v1.1.1 最新 我们正在提供其他团队正在使用的服务。该服务的一些消费者希望针对该服务的最新和最优秀版本进行开发,另一些消费者希望针对该服务的特定构建进行开发。 当然,我们可以在pom.xmls中更改工件版本,为此创建Git-Tags并构建这些标签,但是这些信息在Git存储库中没有价值。 这个想法是