使用Jakarta Commons Daemon当 SIGHUP
信号发送到 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/