vfl_freak
Premium-User
Moin,
ich habe eine Frage im Zusammenhang mit ServerSockets!
In dem Projekt, das ich hier übernommen habe, wird ein globaler ServerSocket verwendet, um die mehrfache Ausführung des Programms zu verhindern !
Wenn ich es richtig verstehe, müsste also hier beim Aufruf einer zweiten Instanz die "BindException" geworfen werden und nach der Meldung der Abbruch erfolgen.
Dieses funktioniert auf vielen PCs in der Firma auch einwandfrei, nur auf einigen leider nicht (geschätzt ca. 20 - 30%).
Mein Vorgänger, der diese Sache mal vor Urzeiten programmiert hat, meinte "es sei nur eine Krücke für Java 1.4.2 gewesen" und würde jetzt mit höheren Versionen nicht mehr funktionieren.
Dies sehe ich allerdings etwas anders, da bei uns inzwischen alle Rechner mind. Java 1.5.x, meist sogar auf V1.6.x laufen!
Hat jemand hiermit Erfahrung resp. weiß, was falsch läuft
Oder gibt es eine andere, Möglichkeit, den Start einer zweiten Instanz zu unterbinden
Danke im voraus für Eure Ideen und Antworten !
Gruß aus OS
Klaus
ich habe eine Frage im Zusammenhang mit ServerSockets!
In dem Projekt, das ich hier übernommen habe, wird ein globaler ServerSocket verwendet, um die mehrfache Ausführung des Programms zu verhindern !
Java:
// systemweite globale Deklarationen
// ---------------------------------
// Mutexserverport zur Instanzenkontrolle des Workers
public static final int nMutexServerport = 62987;
protected listenerSocket = null;
.....
private void checkMultiWorkers()
{
try
{
listenerSocket = new ServerSocket( nMutexServerport );
}
catch( java.net.BindException nbe )
{
JOptionPane.showMessageDialog( this,
"Es ist bereits ein Worker auf diesem System aktiv.\n" +
"Sollte dies nicht der Fall sein, bitte den Rechner neu starten!",
"Fehler", JOptionPane.ERROR_MESSAGE, null );
System.exit( -2 );
}
catch( final IOException ioe )
{
JOptionPane.showMessageDialog( this,
"Es ist bereits ein Worker auf diesem System aktiv.\n" +
"Sollte dies nicht der Fall sein, bitte den Rechner neu starten!",
"Fehler", JOptionPane.ERROR_MESSAGE, null );
System.exit( -2 );
}
} // checkMultiWorkers()
Wenn ich es richtig verstehe, müsste also hier beim Aufruf einer zweiten Instanz die "BindException" geworfen werden und nach der Meldung der Abbruch erfolgen.
Dieses funktioniert auf vielen PCs in der Firma auch einwandfrei, nur auf einigen leider nicht (geschätzt ca. 20 - 30%).
Mein Vorgänger, der diese Sache mal vor Urzeiten programmiert hat, meinte "es sei nur eine Krücke für Java 1.4.2 gewesen" und würde jetzt mit höheren Versionen nicht mehr funktionieren.
Dies sehe ich allerdings etwas anders, da bei uns inzwischen alle Rechner mind. Java 1.5.x, meist sogar auf V1.6.x laufen!
Hat jemand hiermit Erfahrung resp. weiß, was falsch läuft
Oder gibt es eine andere, Möglichkeit, den Start einer zweiten Instanz zu unterbinden
Danke im voraus für Eure Ideen und Antworten !
Gruß aus OS
Klaus
Zuletzt bearbeitet: