gpt4 book ai didi

java - 首次登录时无法打开 Hibernate Session 进行事务处理

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:33 24 4
gpt4 key购买 nike

我有一个运行完整的 Spring MVC 应用程序,它与 Spring Security 一起运行,但每当服务器一段时间未处于 Activity 状态并且有人尝试登录时,我都会收到以下错误:

HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin transaction failed

有时(大约 5 秒后)它开始正常工作。

我搜索并找到了this链接,但我不知道如何在连接池配置中配置连接测试。

有什么建议吗?

编辑:

我找到了 this设置配置池的链接,所以我尝试在我的 dataSource 中实现它:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">

<property name="driverClassName" value="com.mysql.jdbc.Driver" />

<property name="url" value="jdbc:mysql://192.168.254.45:3306/7jogos" />
<property name="password" value="..." />
<property name="username" value="..." />


<!-- Configuration pool -->
<property name="validationQuery" value="SELECT 1" />
<property name="validationInterval" value="34000" />
<property name="testOnBorrow" value="true" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="55" />


</bean>

但我最终在 validationInterval 上收到错误消息:

Multiple annotations found at this line: - No setter found for property 'validationInterval' in class 'org.apache.commons.dbcp.BasicDataSource'

最佳答案

如果没有堆栈跟踪,很难确定,但您很可能正在处理过期的数据库连接。 Hibernate 无法为您启动事务,因为它尝试运行的第一条语句(“START TRANSACTION - 通过 JDBC”)失败。同样,我认为这是因为底层数据库连接同时失效

这可能由于各种原因而发生:

  • 数据库设置(最有可能)
  • 网络/防火墙
  • 本地设置等

但无论来源如何,您都可以选择确保不会发生这种情况。如果您使用的是 JDBC 池(如 Tomcat JDBC pool ),则可以将池配置为测试并在必要时重新打开连接。例如,testOnBorrow 设置将指示池在实际提供给应用程序使用之前不断测试数据库连接。您可以微调这些设置以消除与性能相关的问题。

附加信息

您正在尝试很好地实现池化,但您得到的变量名称:validationInterval 是错误的。

您收到该错误是因为 BasicDataSource 没有这样命名的变量,因此 Spring 无法设置该属性。查看 BasicDataSource ( link ) 的 javadoc,了解哪些配置变量可供您使用。 validationInterval 变量可以应用于 tomcat 池实现(我上面建议的),您选择的那个没有此功能。

关于java - 首次登录时无法打开 Hibernate Session 进行事务处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com