2011-10-06 73 views
1

我在为个人使用而创建的小型java应用程序上创建了一个命令行界面。 目前,cli与原始应用程序驻留在同一个项目中,但我计划将其提取到它自己的项目中,有效地构建2个独立的可执行文件夹,使我可以根据需要启动cli,并查询另一个正在运行的程序信息。在同一台机器上运行的其他java应用程序上调用服务

我想弄清楚在同一台机器上调用远程服务的最简单和最轻量级的解决方案。 我看着spring remoting,但许多提供的解决方案如HttpInvoker,Hessian/Burlap,JAX RPC Web服务都基于HTTP或SOAP,因此不适合这项工作。 JMS也似乎是矫枉过正。

这给我留下了RMI,它看起来相当重量级,可能还有JMX? 建议?

+1

我的问题http://stackoverflow.com/questions/6121990/pass-string-as-params-from-one-java-app-to-another – mKorbel

回答

1

JMX将使用下面的RMI进行远程访问。 JMX旨在暴露管理员apis(监视/管理) - 不打算作为通用远程API。

从发展的角度来看,RMI与spring remoting的支持相当轻量级。即使是运行时,与其他已列出的选项相比,该选项的开销也最小。

同样在弹簧远程支持的情况下,如果稍​​后需要,您可以轻松切换到其他选项。

看看这artcile,比较/基准上述选项的性能。

+0

然后我会使用RMI。 我想避免RMI的一个主要问题是因为我从几年前就记得您需要使用存根和骨架的rmic进行额外编译,但是从J2SE 5.0版本开始,似乎远程对象的存根类没有除非远程对象需要支持在5.0之前版本的虚拟机中运行的客户机,否则需要使用rmic stub编译器预生成更长的时间。 这是一个很大的优点 – nkr1pt

0

在个人使用的应用程序中,我会使用JMX,因为它应该是阻力最小的路径。我在过去有过很棒的经历。您将能够在几分钟内完成并运行,而且您不必考虑用于传输数据的消息格式(只要您的bean为Serializable即可)。

将接口放在远程调用的前面,以便稍后如果JMX不合适,稍后可以放入另一个实现。

1

我想说它很大程度上取决于项目/功能的标题。 JMX很容易设置,您可以利用现有的客户端/ guis来查询和设置参数 - 这可以为您节省大量工作。它也可以让你的系统与监控工具集成在一起。

另一方面,如果功能与管理/监控无关,并且更多地沿着输入和输出数据的方向进行,则一个选项可能是Apache MINA。我以前用过它,效果很好。但你会有效地创建你自己的协议!我怀疑MINA最终会比简单的RMI“重量级更轻”。

相关问题