如何将一些值从shell脚本传递给已经运行的Java程序?
答案 0 :(得分:5)
独立Java应用程序已在运行,因此命令行参数无可争议。
剩下的最简单的替代方案是轮询文件,套接字和HTTP服务器。
轮询文件:
让您的Java应用程序在几秒钟内读取一次特定目录。如果文件出现在该目录中,请阅读并按照说明进行操作。使shell脚本形成该文件。
<强>插口:强>
让你的Java应用程序在套接字上侦听。使用netcat或类似的实用程序将命令发送到该套接字。
HTTP服务器:
在Java进程中启动HTTP侦听器。使用wget或类似的实用程序将命令发布到该侦听器:
HttpServer httpServer = HttpServer.create(new InetSocketAddress(port), 5);
httpServer.createContext("/", new TileServerRequestHandler());
httpServer.setExecutor(Executors.newCachedThreadPool());
httpServer.start();
答案 1 :(得分:1)
将params写入您的进程定期询问的文件?原油,但它的工作(但有很多使用限制)。 或让您的进程侦听套接字并获取shell脚本以将参数发送到套接字。
答案 2 :(得分:0)
了解如何将命令行参数传递给java here
编辑:问题中的新信息意味着这不再是一个合适的解决方案
答案 3 :(得分:0)
与Java进程通信的一个选项是Java Messaging Service API。您的shell脚本可以启动JMS客户端以将消息发送到主应用程序。