【发布时间】:2017-04-21 10:06:36
【问题描述】:
Wildfly 服务器关闭时,我正在尝试对数据库执行一些更新。
不幸的是,在取消部署应用程序之前,我用来更新数据库的数据源似乎正在关闭...
以下是相关代码:
@PreDestroy
public void shutdown()
{
logger.debug("|||||||||||||||||||||||||||||||| Closing GatewayDAO");
System.out.println("Closing GatewayDAO ");
Session session = getSession();
Query query = session.createQuery("UPDATE Gateway gw SET gw.status = 0, gw.lastActivity = NOW()");
query.executeUpdate();
}
如你所见,我使用 Spring 破坏检测。
在 Wildfly 控制台中:
[...]
[WF] 11:58:22,794 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-8) WFLYJCA0010: Unbound data source [java:jboss/datasources/RfBerry]
[...]
[WF] 11:58:23,500 INFO [stdout] (ServerService Thread Pool -- 271) Closing GatewayDAO
[WF] 11:58:23,550 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (ServerService Thread Pool -- 271) SQL Error: 0, SQLState: null
[WF] 11:58:23,550 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (ServerService Thread Pool -- 271) javax.resource.ResourceException: IJ000470: You are trying to use a connection factory that has been shut down: java:jboss/datasources/RfBerry
[WF] 11:58:23,556 WARN [org.springframework.context.annotation.CommonAnnotationBeanPostProcessor] (ServerService Thread Pool -- 271) Invocation of destroy method failed on bean with name 'gatewayDAOImpl': org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection
不知道是否可以在应用取消部署后告诉wildfly关闭数据源。
注意:当我刚刚取消部署应用程序并让服务器保持打开状态时,代码可以工作。
【问题讨论】:
-
尝试注入数据源以生成对此的依赖。例如。
@Resource(lookup = "java:/app/datasource") DataSource dataSource; -
我已经尝试过了,它没有解决我的问题,如果我尝试发送 sql 查询,会话仍然关闭
标签: java spring jboss datasource wildfly