在我的JavaEE应用程序中,我有一个@Singleton
类,其中包含一些@Scheduled
方法。此外,还有@PostConstruct
和@PreDestroy
的方法来设置和清理数据库。 (为了简单起见,我只记录了示例,因为它重现了问题。)应用程序必须在JBoss EAP 6.3.0.GA服务器上运行。
虽然@PostConstruct
方法工作正常,但是当我关闭服务器时没有调用@PreDestroy
(在eclipse中按停止服务器按钮时也没有使用{来自jboss-cli的{1}}命令。这是一些代码,它可以重现问题:
shutdown
在启动服务器期间,日志中会显示import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
@Startup
public class TimerBean {
private static final Logger log = LoggerFactory.getLogger(TimerBean.class);
@PostConstruct
private void postConstruct() {
log.info("PostConstruct called");
}
@PreDestroy
private void preDestroy() {
log.info("PreDestroy called");
}
}
消息。但是当关闭服务器时,不会显示任何日志消息。
如何让服务器调用@PostConstruct
方法?
编辑:由于@PreDestroy
方法不是清理数据库的适当位置,因此该问题已过时。