我在 Java 中使用 Jersey 开发了一个 REST-ful 网络服务。它基本上是一个围绕抓取的网络数据的 JSON 服务。目前我将整个抓取的数据集(A Set<Object>
)序列化到一个文件中,当用户请求数据时,我从磁盘加载它并反序列化它。 Web 应用程序可能会在 Tomcat 服务器上运行。
但是,此数据可能会在一天中的任何时间发生变化,因此我想每隔 n
更新一次小时。我知道如何定期更新文件(例如 ScheduledExecutorService
),但由于不熟悉 Tomcat 服务器的流程,我不确定应该在哪里执行代码。
例如,根据 this article执行 ScheduledExecutorService
是个坏主意在资源类中,因为它是根据用户请求创建的。
非常感谢任何帮助。
最佳答案
我相信您对此有一个上下文,可能像 Java servlet 上下文。你可以做的是创建一个方法来创建一个线程来为你更新文件。像这样的东西:
private static class myWorker extends Thread {
//Constructor
public myWorker() {
//set your parameters
}
@Override
run(){
while(true) {
//Do your file updating
sleep X;
//X is the time between each update
}
}
并在上下文定义中创建此类的实例并启动线程。
你要记住的一件事是,你可能会面临这样一个事实,即你正在写入你的文件,同时你也试图读取它(通过 Jersey 请求)。所以我建议你使用一个 syncronized void 来读/写它..
希望对您有所帮助!
关于java - Jersey Web 应用程序类似 cron 的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26027275/