1

使用Jakarta Commons Daemon是否可以让我的 Java 应用程序在SIGHUP向进程发送信号时执行操作(重新加载配置) jsvc?如果不是 - 我在不停止进程的情况下使用这个库重新加载配置的其他选项是什么?我查看了文档,但在这个问题上并没有那么清楚。

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

4

1 回答 1

1

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

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

[EDIT2] 如果可移植性不是问题,您可以尝试 undocumented and unsupported class sun.misc.Signal。看到这个线程。请注意,它不受支持、未记录等,并且 API 在过去五年中没有更改。

于 2010-01-05T15:07:56.033 回答