当我在 j2ee 中启动服务器时定期执行方法
execute method periodically when I start server in j2ee
我需要在启动服务器时定期执行方法,我使用的是 Tomcat v6.0 服务器,作为框架,我使用 hibernate、JSF、Primefaces 和 spring。
我应该在 web.xml 中添加一些东西吗?
有多种解决方案,您可以通过其中一种方式实现您的需求。
假设您的方法是您计划在某个时间间隔秒运行 执行一次的 Dispatch 任务
将您的任务分开 class 并在您的上下文成功初始化后安排它
ScheduledExecutorService scheduledExcecutor = Executors.newScheduledThreadPool(3);
scheduledExcecutor.scheduleWithFixedDelay(yourTaskInstance, 0,
sleepInterval, TimeUnit.MILLISECONDS);
您也可以使用固定费率进行安排,查看 ScheduledExecutorService 文档
当你的服务器关闭时,请优雅地关闭它。
根据您的应用环境,您可以通过以下任意一种方式添加启动钩子。
Spring
您可以为应用程序上下文的启动和关闭阶段实现 Lifecycle or SmartLifeCycle 接口。
Tomcat
您可以通过实现 LifecycleListener
添加监听器
通用
- ServletContextListener
- 正在将 servlet 配置为在启动时加载。
之后可以添加ScheduledThreadPoolExecutor定时执行任务
我需要在启动服务器时定期执行方法,我使用的是 Tomcat v6.0 服务器,作为框架,我使用 hibernate、JSF、Primefaces 和 spring。 我应该在 web.xml 中添加一些东西吗?
有多种解决方案,您可以通过其中一种方式实现您的需求。
假设您的方法是您计划在某个时间间隔秒运行 执行一次的 Dispatch 任务
将您的任务分开 class 并在您的上下文成功初始化后安排它
ScheduledExecutorService scheduledExcecutor = Executors.newScheduledThreadPool(3);
scheduledExcecutor.scheduleWithFixedDelay(yourTaskInstance, 0,
sleepInterval, TimeUnit.MILLISECONDS);
您也可以使用固定费率进行安排,查看 ScheduledExecutorService 文档
当你的服务器关闭时,请优雅地关闭它。
根据您的应用环境,您可以通过以下任意一种方式添加启动钩子。
Spring
您可以为应用程序上下文的启动和关闭阶段实现 Lifecycle or SmartLifeCycle 接口。
Tomcat
您可以通过实现 LifecycleListener
添加监听器
通用
- ServletContextListener
- 正在将 servlet 配置为在启动时加载。
之后可以添加ScheduledThreadPoolExecutor定时执行任务