一个函数在我的Tomcat
服务器中实现:基本上ScheduledExecutorService
将被设置为在初始化HttpServlet
时定期运行任务。代码如下:
@Override
public void init() throws ServletException {
HttpsTool.setupUncheckedHttps();
LOGGER.info("DeploymentInfoScheduler Initialized successfully....");
System.out.println("DeploymentInfoScheduler Initialized successfully....");
this.retrieveServiceDeploymentsInfo();
}
private void retrieveServiceDeploymentsInfo() {
final Runnable deploymentsDataHandler = new DeploymentsDataHandler();
final ScheduledFuture<?> beeperHandle = deploymentsInfoRetrieverScheduler
.scheduleAtFixedRate(deploymentsDataHandler, 0, 5, TimeUnit.MINUTES);
}
如果servlet成功初始化,任务将永远每5秒运行一次。在DeploymentsDataHandler
的{{1}}方法中,最初会在下面记录一条消息:
run
如果我错了,请纠正我:无论@Override
public void run() {
LOGGER.info("Now begin a new round of refreshing deployment data...");
this.doWorkFlow();
}
方法中是否有任何未处理的异常,该消息应始终每5分钟记录一次。但事实是这个调度程序运行良好一段时间后突然停止工作,甚至消息也被停止记录。任何可能的解释?我怎么能处理这种情况,因为我想确保这个调度程序服务始终在运行。或者有没有办法调试这个问题?
我假设以下代码将确保即使doWorkFlow
中发生异常,Scheduler
也永远不会停止执行。
doworkFlow
答案 0 :(得分:2)