2011-03-23 67 views
1

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

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

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

回答

1

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

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来处理一些麻烦。

+0

这很酷 - Linux提示和它可以让您编写Java程序的便携且简单的事实。 – 2011-03-23 14:19:07

0

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