java - Jersey Web 应用程序类似 cron 的任务

标签 java json rest tomcat jersey

我在 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/

相关文章:

javascript - 向现有 Rest 服务添加新参数

java - Spark MLlib 中的朴素贝叶斯

PHP 丢失 MySQL 结果的字段数据类型(一切都变成字符串)

java - REST 服务和 Servlet

java - 如何使用带有 JSON 数据的 HTTPURLConnection 发送 POST 请求

ios - 匹配 SwiftyJson 中的精确键

java - 为 JAXB.unmarshal() 提取 XML 节点的最简单方法是什么?

java - 在线程中运行时,While 循环不起作用

java - 在 Java 中,获取系统时间最快的方法是什么?

javascript - 如何将文本从html输入写入json文件?