当前位置:  开发笔记 > 编程语言 > 正文

在Java Web应用程序中运行常规后台事件

如何解决《在JavaWeb应用程序中运行常规后台事件》经验,为你挑选了2个好方法。

在播客#15中,杰夫提到他如何在后台运行常规活动,好像这是一个正常的功能 - 不幸的是我似乎无法通过推特找到它.现在我需要做类似的事情,并将问题提交给群众.

我目前的计划是当第一个用户(可能是我)进入网站时,它会启动一个后台线程,等待分配时间(每小时一小时),然后启动阻止其他人的事件(我是一名Windows程序员,所以我认为在事件和WaitOnMultipleObjects方面,直到它完成.

杰夫是如何在Asp.Net中做到这一点的,他的方法是否适用于Java web-app世界?



1> Zizzencs..:

我认为开发一个运行后台任务的自定义解决方案并不值得,所以我建议在Java中使用Quartz Scheduler.

在您的情况下(需要在Web应用程序中运行后台任务),您可以使用分发中包含的ServletContextListener在Web容器启动时初始化引擎.

之后,您可以启动(触发)后台任务(作业),例如,您可以使用日历或类似cron的表达式.在您的情况下,您很可能应该使用SimpleTrigger,它允许您以固定的,定期的间隔运行作业.

在Quartz中也可以轻松地描述作业本身,但是您没有提供有关您需要运行的内容的任何详细信息,因此我无法在该区域中提供建议.



2> 小智..:

如上所述,Quartz是一种标准解决方案.如果您不关心重新启动时后台任务的集群或持久性,则可以使用内置的ThreadPool支持(在Java 5,6中).如果使用ScheduledExecutorService,则可以将Runnables放入后台线程池中,该池将在执行前等待一段特定时间.

如果您确实关心集群和/或持久性,可以使用JMS队列进行异步执行,尽管您仍然需要某种方法来延迟后台任务(您可以使用Quartz或ScheduledExecutorService来执行此操作).

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有