无法在首次登录时打开Hibernate Session进行交易

问题描述 投票:3回答:3

我有一个可以正常运行的带有Spring Security的Spring MVC应用程序,但是只要服务器有一段时间没有处于活动状态并且有人尝试登录,就会出现以下错误:

HTTP状态500-请求处理失败;嵌套的异常是org.springframework.transaction.CannotCreateTransactionException:无法打开Hibernate Session进行事务处理。嵌套的异常是org.hibernate.TransactionException:JDBC开始事务失败

有时(大约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上收到一个错误,说:

在此行找到多个注释:-在类“ org.apache.commons.dbcp.BasicDataSource”中找不到属性“ validationInterval”的设置器。

我有一个可以正常运行的带有Spring Security的Spring MVC应用程序,但是每隔一段时间服务器没有处于活动状态并且有人尝试登录时,就会出现以下错误:HTTP状态...

java spring spring-mvc tomcat jdbc
3个回答
2
投票

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


1
投票

替换


0
投票

答案是在我的编辑中,该编辑是在具有连接数据的bean中添加以下内容:

© www.soinside.com 2019 - 2024. All rights reserved.