我在tomcat服务器上有一个应用程序,它建立在spring framework + Hibernate上,但是当应用程序,服务器空闲7天后,如果我尝试访问应用程序,我会收到以下错误
org.hibernate.exception.JDBCConnectionException:无法执行查询
但是mysql正在设备上运行,其中tomcat服务器正在运行我已经检查了所以我重新启动了tomcat服务器然后应用程序运行良好我没有收到任何错误
运行
的应用程序的database.xml文件<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
</beans>
我无法重新启动服务器,因为我想访问该应用程序是否有任何永久解决方案?
答案 0 :(得分:2)
您实际上没有连接池(您需要)。您正在编写单个连接的硬编码。因此,一旦它闲置太长时间,一个连接就会消失。
您需要使用数据库连接池。你正在使用Tomcat,你可能会考虑使用它的内置选项
https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
<Resource name="jdbc/cciDataSource"
auth="Container"
type="javax.sql.DataSource"
username="userAcctName"
password="somePassword"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://someDatabaseHost/databaseName"
maxActive="15"
maxIdle="7"
validationQuery="select now()"
maxWait="1000"
removeAbandoned="true"
removeAbandonedTimeout="15"
testOnBorrow="true"
logAbandoned="true" />