2014-09-29 67 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

相關問題