Hallo,
ich nutze MySQL 5.1 und den JDBC 5.0.5 und möchte damit in Java (6) einen ConnectionPool aufbauen. Leider finde ich nirgendswo Optionen, was Timeouts, minimale und maximale Verbindungen angeht (für Oracle habe ich es als Methode gefunden, für MySQL nicht). Vielleicht bin ich auch ganz falsch an die Sache herangegangen:
Bei vielen Beispielen wird es ähnlich gemacht, jedoch die Abgefragte Verbindung sofort mittels close() geschlossen, was ja nicht der Sinn eines solchen Pools sein kann (oder ist in diesem Fall close die Freigabe der Connection?). Welche Rolle spielt JNDI und wann sollte man es einsetzen?
Ich wäre sehr dankbar, wenn mir das jemand etwas aufschlüsseln könnte.
ich nutze MySQL 5.1 und den JDBC 5.0.5 und möchte damit in Java (6) einen ConnectionPool aufbauen. Leider finde ich nirgendswo Optionen, was Timeouts, minimale und maximale Verbindungen angeht (für Oracle habe ich es als Methode gefunden, für MySQL nicht). Vielleicht bin ich auch ganz falsch an die Sache herangegangen:
Code:
public class TempMySQLConnectionPool
{
private Vector<MySQLStatement> statements;
private int maxConnections;
private XMLSettingsReader settings;
private MysqlConnectionPoolDataSource MySQLDataSource;
public TempMySQLConnectionPool(XMLSettingsReader pSettings)
{
settings = pSettings;
//maxConnections = 25;
statements = new Vector<MySQLStatement>();
readXMLStatements("mysql_core.xml");
MySQLDataSource = new MysqlConnectionPoolDataSource();
MySQLDataSource.setDatabaseName("nass");
MySQLDataSource.setPort(3306);
MySQLDataSource.setUser("root");
MySQLDataSource.setServerName("localhost");
}
public Connection getConnection() throws SQLException
{
return ((MysqlPooledConnection) MySQLDataSource.getPooledConnection()).getConnection();
}
//testen
public static void main(String[] args)
{
TempMySQLConnectionPool test = new TempMySQLConnectionPool(new XMLSettingsReader("settings.xml"));
try {
Connection con = test.getConnection();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("Select id, username, email from users;");
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()) {
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
System.out.print(rs.getString(i) + " | ");
}
System.out.println();
}
} catch (SQLException e) {
// TODO Automatisch erstellter Catch-Block
e.printStackTrace();
}
}
public boolean readXMLStatements(String XMLFile)
{
// (...)
}
}
Bei vielen Beispielen wird es ähnlich gemacht, jedoch die Abgefragte Verbindung sofort mittels close() geschlossen, was ja nicht der Sinn eines solchen Pools sein kann (oder ist in diesem Fall close die Freigabe der Connection?). Welche Rolle spielt JNDI und wann sollte man es einsetzen?
Ich wäre sehr dankbar, wenn mir das jemand etwas aufschlüsseln könnte.