9

我有一个从systemd的用户实例启动的 Java 服务(使用Dropwizard实现) 。到目前为止,一切都很好。现在我想使用 systemd 的通知功能来使其了解服务状态(可作为C 库函数shell 脚本使用,但最终这两种方法都与环境变量引用的套接字通信)。当服务完成启动时,我可以运行任意代码,但我不确定如何最好地从 Java 中通知 systemd。

其他开发人员在 Windows 上运行此服务,因此如果我的通知代码谨慎且不使用 systemd 运行时不会导致任何输出,那么对于奖励积分将非常有用。

4

1 回答 1

2

我发现这个实现确实使用了系统挂钩,但至少不需要 JNA/JNI。

https://gist.github.com/yrro/18dc22513f1001d0ec8d

正如您所说,systemd 使用环境变量(代码中的 System.getenv("NOTIFY_SOCKET") )引用的套接字,所以我想可能还有一种使用 Java 套接字的方法,尽管我想像很多需要研究和/或反复试验。

于 2016-02-19T03:20:11.340 回答