D) Java-Anwendung nur einmal ausführen

Den SingleInstanceController verwenden

Um den SingleInstanceController in Ihrer Applikation einzusetzen, können Sie sich an dieser Beispielapplikation orientieren:

package de.jbb.sic;

import java.io.File;

public class Example {

  private SingleInstanceController sic = null;

  public Example() {

    this.sic = new SingleInstanceController(new File(System.getProperty("java.io.tmpdir") + "Example.file"), "sic_example_application");
    if (this.sic.isOtherInstanceRunning()) {
      this.sic.sendMessageToRunningApplication("You're still running!?");
      this.sic.sendMessageToRunningApplication("ByeBye");
      System.exit(0);
    }
    else {
      this.sic.registerApplication();
      this.sic.addApplicationStartedListener(new ApplicationStartedListener() {

        public void applicationStarted() {
          System.out.println("First Instance: An other instance started");
        }

        public void foreignApplicationStarted(String name) {
          System.out.println("First Instance: A foreign application started on this port");
        }

        public void messageArrived(Object obj) {
          System.out.println("Other Instance: " + obj.toString());
          if (obj.equals("You're still running!?")) {
            System.out.println("First Instance: Yes, of course!");
          }
          else if (obj.equals("ByeBye")) {
            System.out.println("First Instance: bye ...");
          }
        }
      });
    }
  }

  public static void main(String[] args) {
    new Example();
  }
}

Eine Beispiellösung, die das Problem relativ einfach mit Hilfe von RMI löst, werden Sie in unserem Wiki auf Byte-Welt finden:
Eine RMI-Lösung: Java-Programm nur einmal starten

Ähnliche Beiträge