2014-09-29 3 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.

(Другие ответы OS-специфические могут включать в себя именованные каналы или сигналы, но я бы препятствовать вам идти в этом направлении.)

+0

Спасибо за быстрый ответ, RMI определенно то, что я искал. – Darajan

+0

@Underbar: RMI, вероятно, полный перебор и ненужный комплекс для вашей цели. – jarnbjo

+0

@jarnbjo, что бы вы порекомендовали? Похоже, что через файловую систему/сокеты открывается отверстие для любого другого приложения, чтобы отключить мое приложение. – Darajan

Смежные вопросы