Hallöle,
ich bin am Ende meines Lateins, und im Web finde ich einfach nichts vernünftiges zu dem Thema, selbst in ansonsten guten Tutorials schweigt sich anscheinend alle Welt zu diesem Thema aus:
Zuerst habe ich den mysql-connector verwendet, mittlerweile bin ich auf JdbcRowSet umgestiegen. Die Problematik bleibt aber immer die gleiche:
Meine Datenbank im Web scheint mich immer nach einer Weile nichtstun zu disconnecten (was von Seiten des Anbieters auch verständlich ist). Nur weiss ich nicht, wie ich von Java-Seite damit umgehen soll, wenn mir der Server die verbindung unter dem Hintern wegzieht. Mit einer lokalen Datenbank (localhost oder zweiter linux-pc) hatte ich die probleme nicht.
Um beim Beispiel JdbcRowSet zu bleiben, hier meine prinzipielle Vorgehensweise:
Wie gehe ich mit diesem Problem um? das dürfte ja wohl ein idle-Timeout sein, da es nach längerer Untätigkeit auftritt. Die Fehlermessage ist im wesentlichen:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 571.297 milliseconds ago. The last packet sent successfully to the server was 16 milliseconds ago.
[...]
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
Ich denke, ich habe es hier mit einem prinzipiellen Design-Fehler meinerseits zu tun. Wenn nun jemand einen guten Rat hat oder ein Tutorial kennt, wie ich solche Timeouts vermeide bzw. trotz derer eine Datenbankanbindung stabil und zuverlässig hinbekomme, wäre ich sehr dankbar.
Ich habe mir schon mehrere Tage einen Wolf gegoogelt und bin wirklich am Ende... :rtfm:
ich bin am Ende meines Lateins, und im Web finde ich einfach nichts vernünftiges zu dem Thema, selbst in ansonsten guten Tutorials schweigt sich anscheinend alle Welt zu diesem Thema aus:
Zuerst habe ich den mysql-connector verwendet, mittlerweile bin ich auf JdbcRowSet umgestiegen. Die Problematik bleibt aber immer die gleiche:
Meine Datenbank im Web scheint mich immer nach einer Weile nichtstun zu disconnecten (was von Seiten des Anbieters auch verständlich ist). Nur weiss ich nicht, wie ich von Java-Seite damit umgehen soll, wenn mir der Server die verbindung unter dem Hintern wegzieht. Mit einer lokalen Datenbank (localhost oder zweiter linux-pc) hatte ich die probleme nicht.
Um beim Beispiel JdbcRowSet zu bleiben, hier meine prinzipielle Vorgehensweise:
Java:
JdbcRowSet jdbcRs = new JdbcRowSetImpl();
jdbcRs.setUsername(user);
jdbcRs.setPassword(pw);
jdbcRs.setUrl(url);
String sql = "SELECT name, wert FROM table";
jdbcRs.setCommand(sql);
jdbcRs.execute();
jdbcRs.next();
[...]
// mit dem Ergebnis wird jetzt gearbeitet
//
// jetzt vergeht mitunter viel zeit (mitunter viele Minuten),
// weil ein Kunde kommt oder so
[...]
jdbcRs.updateString("wert", "neue änderung");
jdbcRs.update(Row);
Wie gehe ich mit diesem Problem um? das dürfte ja wohl ein idle-Timeout sein, da es nach längerer Untätigkeit auftritt. Die Fehlermessage ist im wesentlichen:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 571.297 milliseconds ago. The last packet sent successfully to the server was 16 milliseconds ago.
[...]
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
Ich denke, ich habe es hier mit einem prinzipiellen Design-Fehler meinerseits zu tun. Wenn nun jemand einen guten Rat hat oder ein Tutorial kennt, wie ich solche Timeouts vermeide bzw. trotz derer eine Datenbankanbindung stabil und zuverlässig hinbekomme, wäre ich sehr dankbar.
Ich habe mir schon mehrere Tage einen Wolf gegoogelt und bin wirklich am Ende... :rtfm: