gpt4 book ai didi

java - 即时添加 Quartz 源 Java 文件

转载 作者:行者123 更新时间:2023-11-29 09:01:54 25 4
gpt4 key购买 nike

我四处寻找这个答案,但一直没能找到一个好的答案。我想创建一个基于 Quartz 的系统,允许人们安排他们自己的任务。我将使用一个伪示例。

  1. 假设我的 Quartz 程序的主要方法称为 quartz.java。
  2. 然后我有一个名为 sweep.java 的文件,它实现了 Quartz“作业”接口(interface)。

所以在我的 quartz.java 中,我安排我的 sweep.java 每小时运行一次。我运行 quartz.java,它工作正常。伟大的;但是,现在我想在 quartz 调度程序中添加一个 dust.java;然而,因为这是一个生产服务,我不想停止我的 quartz.java 文件,添加我的 dust.java,然后重新编译并再次运行 quartz.java。这种停机时间是 Not Acceptable 。

有没有人对我如何实现这一目标有任何想法?这似乎是不可能的,因为你怎么能在不重新编译、链接等的情况下将另一个 java 文件输入到程序中。

我希望这个例子很清楚。如果我需要澄清其中的任何部分,请告诉我。

最佳答案

部分答案:可以通过编程方式编译然后实例化一个类。

这里是示例代码的链接:

提取的类在第三个源文件中获取(参见方法 getGeneratedClass ,它返回一个 Class<?> 对象)。

但是:请记住这样做有潜在的危险。一个问题,如果您不小心,可能会非常严重,那就是当您动态实例化一个类时,它的静态初始化 block 会被执行。这些可能会对您的应用程序造成严重破坏。因此,此外,您还必须创建一个适当的 SecurityContext .

在上面的代码中,我实际上只得到了 Class<?>对象并且从不以任何方式实例化它,因此不会执行任何代码。但是你的使用场景却大不相同。

关于java - 即时添加 Quartz 源 Java 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16899395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com