This question already has answers here:
What is the best way for IPC in java? [closed]
(1个答案)
Communication between two separate Java desktop applications
(11个答案)
5年前关闭。
我正在编写一个小的应用程序,它将充当较大应用程序的卸载程序。我希望卸载程序能够在运行时向应用程序发送一条非常基本的消息(简单的通知)。
做这个的最好方式是什么?
我想要的插图:
可能做。
通过RMI
使用RMI注册表,可以让您的卸载程序对主应用程序执行远程方法调用。
假设您将同时构建主应用程序和安装程序。并且由于它们将在相同的JVM版本以及本地主机上运行,因此我绝对会推荐RMI。
(其他特定于操作系统的答案可能包括命名管道或信号,但我不鼓励您朝这个方向发展。)
(1个答案)
Communication between two separate Java desktop applications
(11个答案)
5年前关闭。
我正在编写一个小的应用程序,它将充当较大应用程序的卸载程序。我希望卸载程序能够在运行时向应用程序发送一条非常基本的消息(简单的通知)。
做这个的最好方式是什么?
我想要的插图:
public class Uninstall {
public static void main(String[] args) {
if(isRunning("Application")) {
// Tell Application to clear data & exit
sendMessage("Application","EXIT");
}
}
}
最佳答案
您的选择基本上是
通过文件系统
有点笨拙,但易于调试。基本上,您的主应用程序将关注文件系统(例如,通过使用WatchService
。更多信息here)。
通过普通袜子
您的主应用程序将打开一个套接字,并接受来自其他希望与其通信的应用程序的连接。如果您想要做的就是能够关闭主应用程序,则操作很简单
new Thread() {
public void run() {
new ServerSocket(123456).accept();
System.exit(0);
}
}.start();
可能做。
通过RMI
使用RMI注册表,可以让您的卸载程序对主应用程序执行远程方法调用。
假设您将同时构建主应用程序和安装程序。并且由于它们将在相同的JVM版本以及本地主机上运行,因此我绝对会推荐RMI。
(其他特定于操作系统的答案可能包括命名管道或信号,但我不鼓励您朝这个方向发展。)