2014-09-29 58 views
1

我正在编写一个小应用程序,它将充当更大应用程序的卸载程序。我希望卸载程序能够在应用程序运行时向应用程序发送非常基本的消息(简单通知)。在同一台计算机上运行的Java应用程序之间进行通信的最佳方式

这样做的最好方法是什么?

插图我想要的东西:

public class Uninstall { 
    public static void main(String[] args) { 
     if(isRunning("Application")) { 
      // Tell Application to clear data & exit 
      sendMessage("Application","EXIT"); 
     } 
    } 
} 

回答

1

你的选择基本上都是

  • 通过文件系统

    有点笨重,而且易于调试。基本上,您的主要应用程序会留意文件系统(例如使用WatchService。更多信息here)。

  • 通过普通socktes

    你的主要应用程序打开的插座,并接受来自希望与它通信的其他应用程序的连接。如果你想要做的就是能够关闭主应用程序,那么简单的事情可以这样简单:

    new Thread() { 
        public void run() { 
         new ServerSocket(123456).accept(); 
         System.exit(0); 
        } 
    }.start(); 
    

    可能会这样做。

  • 在RMI

    使用RMI注册,让你做卸载程序的远程方法调用你的主应用程序。

假设您将同时构建主应用程序和安装程序。而且由于它们将运行在相同的JVM版本上,并且都在本地主机上运行,​​所以我肯定会推荐RMI。

(其它操作系统的具体答案可能包括命名管道或信号,但我鼓励你在这个方向走。)

+0

感谢您的快速回答,RMI绝对是我所期待的。 – Darajan 2014-09-29 13:05:55

+0

@Underbar:RMI可能是一个完整的矫枉过正和不必要的复杂情况。 – jarnbjo 2014-09-29 13:07:36

+0

@jarnbjo你会推荐什么?浏览文件系统/套接字似乎为任何其他应用程序打开了一个洞,迫使我的应用程序卸载。 – Darajan 2014-09-29 13:09:10

相关问题