Java 如何在我的web服务中每天00:00调用函数
我的问题是,我有一个使用类Java 如何在我的web服务中每天00:00调用函数,java,multithreading,web-services,rest,Java,Multithreading,Web Services,Rest,我的问题是,我有一个使用类Gestion的RESTful Web服务。 在这个类中,我有一个函数\u update\u,我想每天00:00调用这个函数 我不知道如何做到这一点,所以我查看了Web,发现使用线程可能是一个不错的选择。然而,我不知道如何使用它。我是否必须将我的\u update函数移动到一个新类中?如果您使用的是EJB,则可以使用计时器服务 @Singleton public class TimerService { @Inject HelloService hell
Gestion
的RESTful Web服务。
在这个类中,我有一个函数\u update\u
,我想每天00:00调用这个函数
我不知道如何做到这一点,所以我查看了Web,发现使用线程可能是一个不错的选择。然而,我不知道如何使用它。我是否必须将我的
\u update
函数移动到一个新类中?如果您使用的是EJB,则可以使用计时器服务
@Singleton
public class TimerService {
@Inject
HelloService helloService;
@Schedule(second="0", minute="0", hour="0")
public void update(){
System.out.println("timer: " + helloService.sayHello());
}
}
使用任何开源作业或调度程序更多详细信息请参见此处。 或者做纯粹的编码。此链接可能对您有所帮助。睡到半夜,醒来做任务,然后再去睡觉
@Override
public void run() {
while (true) {
try {
Thread.sleep(calculateSleepingTime());
// do what ever you want
} catch (Exception e) {
e.printStackTrace();
}
}
}
private long calculateSleepingTime() throws ParseException {
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return (c.getTimeInMillis()-System.currentTimeMillis());
}
你用的是哪种语言、版本等?哦,对不起,我完全忘了提那个。我在Tomcat 7.0 Servlet容器上使用Java和Jersey 2。使用cron作业库,如。为什么不使用good old
cron
?遗憾的是,我没有使用EJB:(我还是要试试看怎么用。