G
Gast2
Gast
Hi,
ich habe bei meiner Anwendung das Problem dass ich abundzu keine Verbindung zur Datenbank bekomme.
Mein Code sieht so aus (Klasse DBConnector) :
Das ist meine Konfiguration, die beim Programmstart einmal gesetzt wird.
Wenn jetzt ein Programmteil eine Verbindung braucht besorgt er sich die mit folgender Methode:
Kann sich jemand vorstellen warum es da zu Problemen kommen kann?
EDIT:
Hier noch die Exception:
Gruß,
Eike
ich habe bei meiner Anwendung das Problem dass ich abundzu keine Verbindung zur Datenbank bekomme.
Mein Code sieht so aus (Klasse DBConnector) :
Java:
public static synchronized void init() throws SQLException, ClassNotFoundException {
// DB Einstellungen laden
host = Settings.getString("DATABASE", "host");
port = Settings.getInt("DATABASE", "port");
user = Settings.getString("DATABASE", "user");
password = Settings.getString("DATABASE", "password");
database = Settings.getString("DATABASE", "databasename");
autoReconnect = Settings.getBoolean("DATABASE", "autoreconnect");
try {
// Treiber laden
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (IllegalAccessException iae) {
logger.error(null, iae);
} catch (InstantiationException ie) {
logger.error(null, ie);
}
// Datasource konfigurieren
dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUsername(user);
dataSource.setPassword(password);
dataSource.setUrl("jdbc:mysql://" + host + ":" + port + "/" + database + (autoReconnect ? "?autoReconnect=true" : ""));
dataSource.setTimeBetweenEvictionRunsMillis(1000);
dataSource.setTestOnBorrow(true);
dataSource.setValidationQuery("SELECT 1;");
dataSource.setMaxWait(1000);
// Verbindung testen
testConnection(host, port, user, password);
logger.info("Datenbankverbindungen aufgebaut");
}
Wenn jetzt ein Programmteil eine Verbindung braucht besorgt er sich die mit folgender Methode:
Java:
public static Connection getConnection() {
synchronized (monitor) {
Connection con = null;
try {
con = dataSource.getConnection();
} catch (SQLException sqle) {
try {
/* Ein Retryversuch */
con = dataSource.getConnection();
} catch (SQLException aqle2) {
logger.error("Fehler beim Verbinden zur Datenbank", sqle2);
logger.debug("Username: " + dataSource.getUsername());
logger.debug("Password: " + dataSource.getPassword());
logger.debug("URL: " + dataSource.getUrl());
logger.debug("Treiber: " + dataSource.getDriverClassName());
}
}
return con;
}
}
Kann sich jemand vorstellen warum es da zu Problemen kommen kann?
EDIT:
Hier noch die Exception:
org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:104)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
at cnc.database.DbConnector.getConnection(DbConnector.java:95)
at cnc.application.rules.RuleManagerView.updateRuleTable(RuleManagerView.java:94)
at cnc.application.rules.RuleManagerView.newRule(RuleManagerView.java:209)
at cnc.application.rules.RuleManagerView.access$000(RuleManagerView.java:35)
at cnc.application.rules.RuleManagerView$3.actionPerformed(RuleManagerView.java:141)
Gruß,
Eike
Zuletzt bearbeitet von einem Moderator: