gpt4 book ai didi

java - 如何让 2 个 Java 应用程序相互通信?

转载 作者:可可西里 更新时间:2023-11-01 09:48:05 26 4
gpt4 key购买 nike

我有 2 个 Java 应用程序。首先,我可以随意编辑,但稍后我会将其编译为机器代码。第二个我无法编辑,但我可以为它写一个插件。我需要让该插件能够与第一个应用程序对话。一般只是简单地互相发送字符串。进程的输入和输出流不是我的选择。我正在考虑使用 tcp 套接字客户端/服务器或将充当缓冲区的文件。但是这两种方式对我来说都有点难看,谁能给我一个更好的主意?

最佳答案

这取决于您要传输的数据类型。

如果只是String,那么:如果 number of process = 2 并且您对此有把握,那么 stdin &8 stdout 是最好的前进方式。您可以使用 ProcessBuilder 创建一个 Process,然后让流进行通信。其他进程可以只向System.out 传递消息。这比 Socket 更可取,因为你不必处理 socket 的正常关闭等。(如果它失败并且端口未成功解除绑定(bind),这可能是一个大麻烦)

如果 number of process > 2 并且 less than 表示 10,您可能可以使用 Sockets 并通过 Socket 进行通信。这应该能很好地工作,尽管在优雅地管理套接字方面需要付出额外的努力。

如果number of processLarge,那么应该使用JMS。它做了很多你不需要处理的事情。如果进程数量较少,任务就太大了。

因此,在您的情况下,过程是最好的前进方式。

如果您要传输的数据,甚至可以是对象。 RMI 可以在进程数较少的情况下使用。如果更多,请再次使用 JMS

编辑:现在对于以上所有内容,涉及到很多肮脏的工作。如果你想改变一下,如果你正在寻找新的和令人兴奋的东西,我会建议 akka。它是一个基于参与者的模型,使用消息相互通信。

美妙的是, Actor 可以在同一个 JVM 或另一个(非常少的配置)上,而 akka 会为您处理剩下的事情。我还没有看到比这样做更干净的方法:)

关于java - 如何让 2 个 Java 应用程序相互通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16035533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com