2012-02-20 68 views

回答

1
Timer timer = new Timer(); 

为每个DB条目创建一个计时器和任务,像这样。

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 
1

这取决于你的应用程序。

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

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

其他可能的方法是使用延迟的JMS消息。详情请参阅here

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

+0

这也取决于延迟处理是否必须得到保证。如果系统必须保证处理完毕,则计时器必须是持久性的,否则系统必须记录该作业处理了哪个条目,以便在最坏的情况下(例如崩溃)重新启动计时器。 – ewernli 2012-02-20 13:50:00

+0

感谢您的回复.. !! 是的,我只使用JSP和Servlet。我现在想详细说明我的问题,请帮助我,因为我是这个新手。 我真正想要做的是,在数据库中的每一个条目我也想记录数据库中进入的时间(比如说16:00)。 然后在10分钟后(在16:10)我想执行一些代码。 如何具体做到这一点?如果可能的话,附加一些代码链接 。 谢谢.. .. !!! – 2012-02-21 10:42:01

0

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

相关问题