必须定期调用servlet。(就像andorid中的服务概念)
如何做到这一点。使用计时器或任何其他解决方案?提前致谢。
最佳答案
扩展 JB Nizet 的评论...
formerly accepted answer有点像黑客。如果目标是让一些常规任务作为 Web 应用程序的一部分执行,Java 提供了一套灵活的技术来实现这一目标。
ServletContextListener
第一个是 Servlet 规范定义的 Hook ,用于在部署 Web 应用程序和关闭 Web 应用程序时调用代码。这个钩子(Hook)是ServletContextListener .
ScheduledExecutorService
第二部分是添加到最新版本的 Java 中的执行器服务,作为旧 Timer 类的更复杂的替代品。特别是您需要ScheduledExecutorService .
因此,当您的 Web 应用程序启动时,ServletContextListener 会启动 ScheduledExecutorService。当 ServletContextListener 收到关闭通知时,它会告诉执行器正常退出。
一个技巧:确保捕获执行器中的所有异常。如果异常泄漏,执行器会默默地停止执行。这是一个功能而不是一个错误。阅读文档并通过谷歌搜索进行学习。
Jakarta 并发
一些Servlet容器支持Jakarta Concurrency 。该规范提供了上面讨论的执行器服务的自动管理。
关于java - 如何以指定的时间间隔自动定期调用 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26436769/