java - 使用 Jakarta Commons Daemon 重新加载配置

标签 java apache-commons-daemon

使用Jakarta Commons DaemonSIGHUP 信号发送到 jsvc 进程时,是否可以让我的 Java 应用程序执行操作(重新加载配置)?如果不是 - 我使用此库重新加载配置的其他选项是什么 - 而不停止进程?我查看了文档,但没有发现关于这个问题的明确说明。

注意:我不需要跨平台的信号处理方式。我只是想知道 Jakarta Commons Daemon 在与基于 UNIX 的平台一起使用时在配置重新加载方面提供了什么。

最佳答案

Java 没有跨平台的方式来处理信号。最好的办法是打开一个 Socket 并等待其上的一些输入。使用 netcat 或小型 Java 程序连接到套接字。在里面,接受连接,重新加载并关闭连接。您甚至不需要来回发送数据。

[编辑] Jakarta Commons Daemon 的 C 部分似乎不支持处理信号。看这个article from IBM如何在 JNI 库中实现您自己的信号处理程序。它是为 Java 1.3 编写的,但对 Java 5 和 6 仍然有效。

[EDIT2] 如果可移植性不是问题,您可以尝试未记录且不受支持的类 sun.misc.Signal。请参阅this thread 。请注意,它不受支持、未记录等,并且 API 在过去五年中没有改变。

关于java - 使用 Jakarta Commons Daemon 重新加载配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2006775/

相关文章:

java - Spring MVC/Rest 中嵌入的 React 应用程序 : browser GET request routing

java - JSVC重新执行需要使用绝对或相对路径执行

java - 我如何知道守护进程是否从不同的线程停止

spring-boot - Spring Boot 应用程序作为守护进程服务?

java - 使用 JSVC 守护 java 应用程序

Linux 上的 Java 服务 - 如何确保持续正常运行时间。守护进程、Shell 脚本还是 Wrapper?

java - JTabbedPane 和固定高度内容的大小问题

java - 方法可以在不声明的情况下抛出 java.lang.Exception 吗?

java - LRU缓存的最佳实现方式

java - 在 Hibernate 中映射一对多关系?