PostgreSQL Überprüfung ob Sever erreichbar...

mbolder

Mitglied
Hallo,

ich möchte mit der selben Software entweder auf meinen ProduktionsServer im Büro (Server A ) oder auf meinen TestServer im Homeoffice (Server B) zugreifen. Deshalb dachte ich es könnte zwei Möglichkeiten geben zu überprüfen welcher Server verfügbar ist. Entweder die Verbindung auf Server A testen und bei Exception den connectString von Sever B verwenden, oder vorher mittels socket.connect überprüfen ob Server A verfügbar ist und gegebenenfalls auf Server B wechseln. Beide Versuche funktionieren nicht.....
Hat jemand schonmal etwas derartiges versucht ?

Java:
Connection connection = null;
try {
            Class.forName("org.postgresql.Driver");
            connection = DriverManager.getConnection(connectStringServerA,User,PWD);
} catch (ClassNotFoundException e) {
            e.printStackTrace();
            connection = DriverManager.getConnection(connectStringServerB,User,PWD);
} catch (SQLException e) {
            e.printStackTrace();
}

Java:
String connectString ;
String User ;
String PWD ;

try(Socket socket = new Socket()) {
            socket.connect(new InetSocketAddress("192.168.2.2", 5432), 2500);
            connectString ="jdbc:postgresql://127.0.0.1:5432/Mortimer";
            User = "user";
            PWD ="password";
} catch (IOException Ignore) {
            connectString ="jdbc:postgresql://192.168.2.2:5432/Mortimer";
            User = "user";
            PWD ="password";
}
Connection connection = null;
try {
            Class.forName("org.postgresql.Driver");
            connection = DriverManager.getConnection(connectString,User,PWD);

} catch (ClassNotFoundException e) {
            e.printStackTrace();
} catch (SQLException e) {
            e.printStackTrace();
}
 

mrBrown

Super-Moderator
Mitarbeiter
Im ersten Fall liegt es an den benutzten Exceptions.

Du verbindest dich zu Server B, wenn die Verbindung am fehlenden Postgresql-Treiber scheitert. Wenn der nicht da ist, scheitert aus offensichtlichen Gründen jeder Verbindung zu Postgresql-DBs
Du kannst auf das Class.forName gänzlich verzichten, das brauchst du nicht. Und dann noch mal sinnvoll das try-catch aufbauen.

Im zweiten Fall; keine Ahnung ob das überhaupt funktionieren könnte. Bei dir sind in jedem Fall die Adressen vertauscht.



Abseits davon: der sinnvollere Weg dürfte vermutlich sein, das über Umgebungsvariablen/Argumente zu steuern.
Solane die Server nicht völlig austauschbar sind und es egal ist, mit welchem man verbunden ist, würde ich es niemals so entscheiden lassen (und ProduktionsServer vs TestServer klingt nicht danach...).
 

Dukel

Top Contributor
Ich würde mehrere "Profile" erstellen. D.h. du startest dein Programm und wählst z.B. Test aus und greifst dann auf den Server zuhause zu und anders herum.
Du willst keine Zugriffe hard codieren.
 

Ähnliche Java Themen

Neue Themen


Oben