我有一个 headless Java 应用程序,它永远在后台运行,我想就像一个服务/守护进程。它在 Linux 上运行并收集数据,将其存储在数据库中,连续循环。
它是通过 init.d
脚本启动和停止的。它会在系统启动时启动在后台运行的 jar,并在系统关闭时通过杀死特定的 java 进程来停止它。另外,我可以访问此脚本来手动启动/停止,如下所示:
sudo service my-java-app stop
尽管很原始,但这已经足够了。但现在我希望使用更优雅的界面。这将允许我发送命令(即更改数据采集频率和友好终止),并请求数据(即健康检查和统计)。
我以前从未这样做过,我正在寻找一些关于从哪里开始的指导。该应用程序在 headless Linux 的后台运行,因此 GUI 不适合。我想过运行一个 http 服务器并监听 POST 和 GET,但这在 bash 中实现或使用并不简单。我认为可能有一个虚拟 COM 端口或我可以创建的东西?或者甚至是我写入并且应用程序定期读取的文本文件?
我认为最终目标是一种在 bash 中执行命令的方法,并让 java 应用程序以某种方式监听/附加到此。
最佳答案
我曾经在 Java 代码中使用套接字完成过此操作。 Java 应用程序作为客户端或守护程序运行。 main()
入口点检查套接字是否打开,以了解守护进程是否已在运行。您可以使用 CLI 参数来说明是否要启动守护程序或发送命令。
- 在守护进程启动时,您在特定端口上打开一个套接字
- 在另一次启动时,您检查该特定端口上的套接字是否打开,如果打开则向其发送消息。
注意:这意味着选择一个固定端口,顺便说一句我不喜欢它。
关于java - 后台 Java 服务应用程序的简单发送/接收接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22981420/