在同一台计算机上运行的java应用程序之间通信的最佳方式
我正在编写一个小应用程序,它将充当更大应用程序的卸载程序。我希望卸载程序能够向正在运行的应用程序发送一条非常基本的消息(一个简单的通知) 最好的方法是什么 我想要的说明:在同一台计算机上运行的java应用程序之间通信的最佳方式,java,Java,我正在编写一个小应用程序,它将充当更大应用程序的卸载程序。我希望卸载程序能够向正在运行的应用程序发送一条非常基本的消息(一个简单的通知) 最好的方法是什么 我想要的说明: public class Uninstall { public static void main(String[] args) { if(isRunning("Application")) { // Tell Application to clear data & exi
public class Uninstall {
public static void main(String[] args) {
if(isRunning("Application")) {
// Tell Application to clear data & exit
sendMessage("Application","EXIT");
}
}
}
你的选择基本上是
- 通过文件系统
有点笨重,但易于调试。基本上,您的主应用程序会关注文件系统(例如,通过使用
。更多信息)监视服务
- 穿普通袜子
您的主应用程序打开一个套接字,并接受来自希望与其通信的其他应用程序的连接。如果您想做的只是能够关闭主应用程序,那么只需
也许可以new Thread() { public void run() { new ServerSocket(123456).accept(); System.exit(0); } }.start();
- 超过RMI 使用RMI注册表让卸载程序在主应用程序上执行远程方法调用
(其他特定于操作系统的答案可能包括命名管道或信号,但我不鼓励您朝这个方向走。)谢谢您的快速回答,RMI绝对是我要找的。@Underbar:RMI对于您的目的来说可能是一个完全过份的、不必要的复合体。@jarnbjo您有什么建议吗?通过文件系统/套接字似乎为任何其他应用程序打开了一个漏洞,迫使我的应用程序卸载。RMI安全性不高。事实上,我不认为有什么方法可以阻止某人输入卸载程序。如果您只想发送一个简单的命令,那么简单的套接字可能是最好的选择。当然,可以实现某种身份验证机制,以防止任何“未知”应用程序发送IPC信号。RMI和普通套接字通信本身都不提供身份验证。