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
