2本地Java应用程序如何交互?

时间:2011-11-02 20:23:54

标签: java

在同一台计算机上同时运行2个裸机控制台Java应用程序,例如friend.println(String s)我的第一个应用程序,导致第二个应用程序输出s到它的标准输出(虽然在第一个应用标准输出中有静音)。

如何实现这个?

5 个答案:

答案 0 :(得分:2)

使用套接字,管道,共享内存或其他东西建立连接(可能使用JRMI)。为他们设计协议和/或API进行通信,定义println服务,让一个应用程序调用另一个。

答案 1 :(得分:2)

你必须以某种方式在两者之间传递消息。由于它们不会同时在同一个JVM中运行,因此您必须使用可以在计算机上的不同进程之间进行通信的通信介质。

你可以:

  • Use RabbitMQ(可以找到教程here
  • Use RMI
  • 管道输出from one to the other
  • 共享文件访问:让app2监控app1写入的文件,并对该文件中的任何新条目作出反应
  • 使用网络socketsapp2让网络套接字可用于接收来自app1的通信(通过连接到localhost

您选择哪一个取决于您想要完成的任务,以及您需要的复杂程度。每种方法都有利弊。例如,某些并发/基于文件的选项可能会产生死锁,但这些选项中的任何一个都应该提供一种可行的方法来完成您描述的内容。如果你不熟悉这些技术的学习曲线并不太难。

答案 2 :(得分:0)

套接字或RMI。共享访问文件,它们都定期检查。我建议使用低级套接字或RMI。

修改

添加一些链接。

来自BalusC - Oracle Sockets Tutorial

RMI

答案 3 :(得分:0)

以下是我能想到的一些方法:

  • 使用套接字
  • 使用文件并在新邮件到达时附加到该文件
  • Java消息服务
  • 使用数据库

可能所有使用JMS都是最好的。

答案 4 :(得分:0)

最简单的可能是Java RMI。

最强大的是通过TCP / IP的自定义协议。