与Java进程交谈的简单方法

时间:2011-03-23 01:46:06

标签: java linux ipc

我正在尝试找到从Java进程请求信息的最简单方法。从shell脚本我需要传递2个字符串作为参数并返回一个字符串。完全同步和阻止。

最简单的方法是什么? Http有点沉重,但如果没有别的东西可以做。管道/ unix套接字通信很简单,但需要更多维护代码(关于超时,其他本机绑定库等)。自己的tcp通信可以正常......但是很难从bash脚本处理。

是否有其他简单,轻量级的选项不需要从脚本中启动另一个JVM?

4 个答案:

答案 0 :(得分:3)

您可以使用bash's /dev/tcp支持来读取和写入TCP套接字:

在一个终端:

$ nc -l 8888
hello
why hello!
^D

在另一个终端:

$ exec 6<>/dev/tcp/localhost/8888
$ echo hello >&6
$ cat <&6
why hello!
$ 

如果编写Java程序来侦听本地套接字以替换nc -l侦听器,则可以稍微麻烦地使用TCP。

答案 1 :(得分:1)

您已使用Linux对此进行了标记。如果这只能用于Linux,那么你可以用mkfifo创建一对命名管道,从一个读取Java程序块(或者如果需要,只读取Java程序中的一个线程),然后通过写入发送命令它; Java程序可以在另一个程序上发送回复。

答案 2 :(得分:1)

我肯定会使用http。如果您已经在应用服务器中运行,那很容易。如果没有,你可以在这里找到答案:

http://blogs.operationaldynamics.com/andrew/software/free-java/sun-secret-webserver.html

答案 3 :(得分:0)

对于简单的通信,只需使用文件和dirwatcher - 跛脚但有效。使用HTTP服务器,我会坚持使用HTTP,否则您可以随时尝试JMX或编写自己的套接字连接。