如何与现有的java进程通信

时间:2011-05-06 15:13:30

标签: java shell

如何将一些值从shell脚本传递给已经运行的Java程序?

4 个答案:

答案 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客户端以将消息发送到主应用程序。