一尘不染

如何在指定的时间间隔定期自动调用servlet

jsp

必须定期调用servlet。(例如andorid中的服务概念)

这个怎么做。使用计时器或其他解决方案?

提前致谢。


阅读 200

收藏
2020-06-08

共1个答案

一尘不染

扩展JB Nizet的评论…

在以前接受的答案是怎样的一个黑客。如果目标是将一些常规任务作为您的Web应用程序的一部分执行,则Java提供了一些巧妙的技术来实现这一目标。

ServletContextListener

第一个是Servlet规范定义的挂钩,用于在部署Web应用程序和关闭Web应用程序时调用代码。这个钩子是ServletContextListener

ScheduledExecutorService

第二部分是添加到Java的最新版本中的executor服务,它是旧Timer类的更复杂的替代品。特别是您需要ScheduledExecutorService

因此,当您的Web应用程序启动时,ServletContextListener将启动ScheduledExecutorService。当ServletContextListener通知关闭时,它告诉执行程序正常退出。

一个技巧:确保在执行程序中捕获 所有 异常。如果有异常泄漏,则执行程序将静默停止执行。这是一个功能,而不是错误。阅读文档并进行一些谷歌搜索。

2020-06-08