每月重新加载 servlet 一次

2023-12-24

如何每月重新加载一次 servlet?

我们得到了一些每月会改变一次的数据,这些数据是给servlet的,但是我们不需要将这些数据保存到DB中,而是希望将其做成一个每月更换一次的配置文件,怎么办我做这个?

我知道servlet的生命周期策略是由容器控制的,我使用的是websphere 7,但我不知道是否有办法在websphere中配置它。

调用destory()方法会影响servlet的运行实例吗? AFAIK,servlet 是多线程的。


不要使用 servlet 来存储数据。而是将数据存储为ServletContext。您可以在以下人员的帮助下完成ServletContextListener http://download.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html。相同的侦听器类也可用于在固定时间间隔重新加载数据ScheduledExecutorService http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html.

这是一个启动示例:

public class Config implements ServletContextListener {

    private ScheduledExecutorService scheduler;

    @Override
    public void contextInitialized(ServletContextEvent event) {
        Data data = new Data();
        event.getServletContext().setAttribute("data", data);
        scheduler = Executors.newSingleThreadScheduledExecutor();
        scheduler.scheduleAtFixedRate(new Reloader(data), 0, 30, TimeUnit.DAYS);
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
        scheduler.shutdownNow();
    }

}

(请注意,没有TimeUnit.MONTH,所以这是“每月一次”所能得到的最好结果)

哪里的Reloader类看起来像这样:

public class Reloader implements Runnable {

    private Data data;

    public Reloader(Data data) {
        this.data = data;
    }

    @Override
    public void run() {
        data.reload();
    }

}

注册监听器后/WEB-INF/web.xml如下

<listener>
    <listener-class>com.example.Config</listener-class>
</listener>

它将创建Data实例和执行的单线程调度程序data.reload()每 30 天一次,您可以访问Data每个 servlet 中的实例如下:

Data data = (Data) getServletContext().getAttribute("data");

在 JSP 中如下:

${data}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每月重新加载 servlet 一次 的相关文章

  • createImage(int width, int height) 的问题

    我有以下代码 作为游戏的一部分每 10 毫秒运行一次 private void gameRender if dbImage null createImage returns null if GraphicsEnvironment isHea
  • Spring Security 自定义过滤器

    我想自定义 Spring security 3 0 5 并将登录 URL 更改为 login 而不是 j spring security check 我需要做的是允许登录 目录并保护 admin report html 页面 首先 我使用教
  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • 不同类型的数组

    是否可以有一个包含两种不同类型数据的数组 我想要一个包含双精度型和字符串的数组 我尝试过 ArrayList
  • GWT - 如何组织项目以拥有多个网页以及它们之间的导航

    我是 GET 的新手 顺便说一句 它给我留下了深刻的印象 并且发现它对于像我这样熟悉 C NET 桌面技术并愿意编写 Web 应用程序的人来说非常有吸引力 我根据 GWT Eclipse 向导生成的示例启动了自己的项目 该项目生成带有面板的
  • Spring Boot自动装配存储库始终为空[重复]

    这个问题在这里已经有答案了 每次我进入我的服务类时 存储库似乎都没有自动连接 因为它不断抛出 NullPointerException 谁能帮我检查一下我缺少什么吗 这是我的代码 演示应用程序 java package com exampl
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 使用 JUnit 时,有没有办法验证测试方法中是否调用了 try/catch 指令的 Catch 部分?

    例如 如果我想测试以下课程 public class SomeClass public void someMethod try Some code where comething could go wrong catch Exception
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • 套接字的读写如何同步?

    我们创建一个套接字 在套接字的一侧有一个 服务器 在另一侧有一个 客户端 服务器和客户端都可以向套接字写入和读取 这是我的理解 我不明白以下事情 如果服务器从套接字读取数据 它在套接字中是否只看到客户端写入套接字的内容 我的意思是 如果服务
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化
  • 使用按钮作为列表的渲染器

    我想使用一个更复杂的渲染器 其中包含列表的多个组件 更准确地说 类似于this https stackoverflow com questions 10840498 java swing 1 6 textinput like firefox
  • OpenCSV:将嵌套 Bean 映射到 CSV 文件

    我正在尝试将 bean 映射到 CSV 文件 但问题是我的 bean 具有其他嵌套 bean 作为属性 所发生的情况是 OpenCSV 遍历属性找到一个 bean 然后进入其中并映射该 bean 内的所有数据 如果找到另一个 bean 它就
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完

随机推荐

  • 使用 cmd.exe 将长文件名转换为短文件名 (8.3)

    我正在尝试在 Windows 上将长文件名转换为短文件名 8 3 带有命令行参数的批处理文件按预期工作 短蝙蝠 echo OFF echo s1 calling short bat C Documents and Settings User
  • 在嵌套 Lambda 中捕获 Lambda 的静态

    In 这个答案 https stackoverflow com a 33282441 2642059我使用这段代码 std vector
  • 尝试计算两个时间之间的差,不会相减

    我的程序所做的是 它首先打印当前时间 然后用户按 Enter 键 然后它再次打印出时间并计算用户等待按 Enter 键的时间 我没时间做减法 我从 stackoverflow 中的另一个问题中得到了打印当地时间的代码 include
  • 在 switch 语句中使用字符串集合

    我正在努力寻找解决这个问题的方法 这是我的示例代码 class Program private string Command private static string Commands ComandOne CommandTwo Comma
  • jQuery 函数 $(function()) 多次调用 $(function()) 时的执行顺序

    代码如下 window document ready function window alert alert 1 function window alert alert 2 function window alert alert 3
  • 应该 rspec 匹配器 :on => :create

    我正在使用一些 Shoulda rspec 匹配器来测试我的模型 其中之一是 describe Issue do it should not allow value test for priority end 我的问题是模型中的验证如下所示
  • C# 中的条件运算符和返回类型[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 null 需要在这里进行显式类型转换 https stackoverflow com questions 2608878 why does null need an explicit type
  • 使用 UI 的 Airflow s3 连接

    我一直在尝试使用 Airflow 来安排 DAG 其中一个 DAG 包含一项从 s3 存储桶加载数据的任务 出于上述目的 我需要设置 s3 连接 但气流提供的 UI 并不那么直观 http pythonhosted org airflow
  • 哪种算法是查找素数最快的算法?

    使用 C 找出素数最快的算法是什么 我已经使用了 sieve 算法 但我仍然希望它更快 非常快的实施阿特金筛 http en wikipedia org wiki Sieve of Atkin是丹 伯恩斯坦的primegen http cr
  • 在 Ruby on Rails 的模型中使用“current_user”

    我正在使用 Devise 它在助手中提供了 current user 方法 以便我可以在视图和控制器中使用 但是现在我想访问模型中的 current user 方法 这是我现在控制器中的内容 def create set email add
  • 为什么 `Array(0,1,2) == Array(0,1,2)` 没有返回预期结果?

    据我了解 Scala 的 定义两个对象的自然平等 我期望Array 0 1 2 Array 0 1 2 比较自然平等 例如 检查与另一个数组的相应元素比较时数组的所有元素是否返回 true 人们告诉我 Scala 的Array只是一个Jav
  • 为什么 C# 中的类型推断不适用于动态对象和泛型方法?

    我正在开发一个项目 该项目使用 C 泛型与动态关键字相结合来实现一个简单的 prototxt Caffe 文件解析器 该解析器基于 Google protocol buffer 项目的 proto2 语法 解析器使用非常简单的语法来读取 p
  • 将域模型映射到视图模型

    我从一个非常相似的点开始 领域实体 DTO 和视图模型 https stackoverflow com questions 5330172 domain entities dto and view models 建议使用 DTO 在域模型和
  • 如何使用相对路径访问不属于任何项目/程序集的图像[重复]

    这个问题已经存在了 我正在为 帝国时代 2 DE 制作一个模组 我的目标是从新 UI 的目录访问旧的纹理文件 文件结构如下 C Program Files x86 Steam steamapps common AoE2DE 是包含exe的游
  • 重构 JSON 数据

    目前我有一个 json 文件 其中存储了多个数据 如下所示 name Adelphi University supp Yes E WS ed u00a0 online 40 ea 12 1 mid No rd Rolling recs Ye
  • Doctrine 2.0 引导程序?

    好的 我已经在文件夹层次结构中找到了 Doctrine php 文件 如下所示 includes Setup php Doctrine Common DBAL ORM Symfony Doctrine php 我的 setup php 有以
  • 在课堂上使用碰撞列表

    我创建了一个类来创建矩形并将它们放入列表中 我不想让它们碰撞 所以我使用 collidelist 但它不起作用 矩形仍在碰撞 我还希望矩形在击中特定点时向下移动并更改 x 位置 我可以做到这一点 但我不确定它是否会阻止碰撞列表工作 请查看下
  • 我如何知道 lambda 表达式何时为空

    我需要以编程方式检查 lambda 表达式中的嵌套属性 函数结果是否为 null 问题在于 null 可能位于任何嵌套子属性中 例子 功能是 public static bool HasNull
  • Oracle DB 表中的第二高值 [重复]

    这个问题在这里已经有答案了 根据表格 USERS user name email balance 如何创建一个查询 返回最多的第二高用户余额高效的 way 我成功地通过查询获取了此记录 但不是通过有效的方式 SELECT FROM SELE
  • 每月重新加载 servlet 一次

    如何每月重新加载一次 servlet 我们得到了一些每月会改变一次的数据 这些数据是给servlet的 但是我们不需要将这些数据保存到DB中 而是希望将其做成一个每月更换一次的配置文件 怎么办我做这个 我知道servlet的生命周期策略是由