我在为个人使用而创建的小型Java应用程序上创建了一个命令行界面。 目前cli与原始应用程序位于同一项目中,但我计划将其提取到自己的项目中,有效构建2个独立的可执行jar,使我能够根据需要启动cli并查询其他正在运行的程序以获取信息
我正试图找出在同一台机器上调用远程服务的最简单,最轻量级的解决方案。 我看了一下spring remoting,但许多提供的解决方案,如HttpInvoker,Hessian / Burlap,JAX RPC Web服务都基于HTTP或SOAP,因此不适合这项工作。 JMS似乎也有点矫枉过正。
这给我留下了RMI,它看起来相当重量级,可能还有JMX? 建议?
答案 0 :(得分:1)
我认为这很大程度上取决于项目/功能的发展方向。 JMX很容易设置,你可以利用现有的客户端/ guis来查询和设置参数 - 这可以为你节省大量的工作。它还可以让您的系统与监控工具集成。
另一方面,如果功能与管理/监控没有多大关系,而且更多的是将数据输入和输出,一个选项可能是Apache MINA。我过去使用过它,效果很好。但你会有效地创建自己的协议!我怀疑MINA最终会比简单的RMI更“重量级”。
答案 1 :(得分:1)
JMX将使用下面的RMI进行远程访问。 JMX用于公开admin apis(监控/管理) - 不是用作通用的远程api。
从开发的角度来看,具有弹簧远程支持的RMI相当轻量级。即使是运行时,与您列出的其他选项相比,它也可以增加最少的开销。此外,通过弹簧远程支持,您可以在以后需要时轻松切换到其他选项。
看看这个artcile,比较/基准以上选项的表现。
答案 2 :(得分:0)
在一个供个人使用的应用程序中,我会使用JMX,因为它应该是阻力最小的路径。我过去曾经有过这方面的经历。您将能够在几分钟内启动并运行,并且您不必考虑将数据移入的消息格式(只要您的bean为Serializable
即可)。
在远程调用之前放置一个接口,以便稍后如果JMX不合适,您可以稍后再使用另一个实现。