如何在服务器上的特定时间执行一些代码..?

时间:2012-02-20 10:18:36

标签: java web-services java-ee

例如,我必须在数据库中的每个条目10分钟后执行代码。 就像客户端向数据库添加新行一样,10分钟后我必须执行一个方法。

提前致谢.. !!

4 个答案:

答案 0 :(得分:1)

使用cron作业,cron是一个基于时间的作业调度程序,允许您在特定时间或日期定期运行代码。

http://en.wikipedia.org/wiki/Cron

对于eaxmple,这每10分钟运行一次'dosomething.sh'。

*/10 * * * * /home/me/dosomething.sh

示例:http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

答案 1 :(得分:1)

这取决于您的申请。

如果您只使用servlet和jsps而不使用EJB,集群等,只需创建java.util.Timer并在每次更新DB时添加任务。计时器将根据调度运行任务。

如果您正在开发更“严肃”的应用程序,可以使用Quartz。

其他可能的方法是使用延迟的JMS消息。有关详细信息,请参阅here

接下来,最复杂的方法是使用JCA。您可以创建对Application Server的线程轮询和计时器具有“合法”访问权限的JCA组件。

答案 2 :(得分:1)

Timer timer = new Timer();

为每个数据库条目创建一个计时器和任务。

TimerTask task = new TimerTask(){
    public void run()
    {
    //execute the code for every 10 mins
    }
}
timer.scheduleAtFixedRate(task, 0, 10 * 60 * 1000); // period is  10 mins 

答案 3 :(得分:0)

这取决于用户输入行后“10分钟”的准确程度。关键是将要执行的“任务”绑定到触发器数据。因此,您可能希望为数据添加某种事务ID。然后,您可以为此事务数据添加时间戳,然后定期检查事件(例如每15秒),如果发现任何刚刚超过10分钟标记的事务,则执行下一步。