gpt4 book ai didi

java - 是否有与 Java Runtime ShutdownHook 的反向等效项,即 StartupHook?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:48:37 24 4
gpt4 key购买 nike

我正在寻找 Java 运行时中 ShutdownHook 的一般反向等效项,即类似 StartupHook 的东西,其中可以在 JVM 首先执行时执行某些自定义预热或设置代码启动。

我知道一些替代方案,例如在 Servlet 容器启动时使用 ServletContexts 等,或在其他框架(如 Spring 等)中使用类似功能。但这些不是我要找的。我正在寻找一个通用的 JVM 解决方案(如果有的话)。

请告诉我 StartupHook 的整个想法是否不适合 JVM 以及原因。

更新:在浏览了所有提供的答案后(感谢大家),似乎最接近我正在寻找的是 Java Agents。

虽然如果 JVM 允许我做这样的事情会很好(从易用性的角度但可能不是从安全的角度):

  1. 编写一个只用一个方法实现 StartUpHook 的类 - void preMain()
  2. 将该类放入 jar 文件并将该 jar 放入类路径或 JRE 扩展目录
  3. 当 JVM 启动时,它会在类路径中查找所有实现了 StartUpHook 的类,然后调用它的 preMain() 方法。

最佳答案

Java 中没有启动钩子(Hook)。您的选择是(按照我推荐的顺序)。

  • 使用您正在运行的框架(即 Servlet、Spring 等)的启动回调功能。这还包括简单地让编写 main 方法的人给您一个回调。
  • 用您自己的 main(String[]) 方法包装 main(String[]) 方法,然后在从命令行调用您的 main 之后委托(delegate)。
  • 创建 java agent在您的 jar list 中包含一个 Premain-Class 定义的库,然后在命令行上将代理添加到 JVM。

最后两个选项要求您在命令行上添加或更改内容。

关于java - 是否有与 Java Runtime ShutdownHook 的反向等效项,即 StartupHook?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17936019/

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