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