- Eine MySQL-Datenquelle aus JNDI zu lesen
- Diese JNDI-Datenquelle zu verwenden Konfigurieren Sie einen DBCP-Verbindungspool sowie meine JDBC-Verbindung.
- Führen Sie eine SQL-Anweisung mit JDBC aus
- Höflich schließen (Verbindung wieder zum Pool freigeben, schließen). alles andere raus, etc.)
Hier ist mein bester Versuch:
Code: Select all
try {
// 1. Obtain the dbLogger datasource from JNDI.
Context context = new InitialContext();
DataSource logDatabaseDS = (DataSource)context.lookup(logDatabaseJNDI);
// 2. Configure the connection pool with my JNDI datasource.
// HOW?
// 3. Obtain a connection from the pool.
// HOW?
// 4. Use this connection to fire a JDBC INSERT.
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("urlFromJNDI",
"userFromJNDI", "passwordFromJNDI");
PreparedStatement statement = conn.prepareStatement(InsertSQL);
statement.setString(1, appName);
statement.setLong(2, timestamp);
statement.setString(3, logLevel);
statement.executeUpdate();
// 5. Release the borrowed connection back to the pool.
// HOW?
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
[*]Wie man den DBCP-Pool mithilfe von JNDI-Set-Eigenschaften (wie maxIdle, maxWait usw.) konfiguriert. )
[*]Leihen Sie sich auf effiziente Weise eine Verbindung aus dem DBCP-Pool aus (damit dieser Code Dutzende/Hunderte Male pro Sekunde ausgelöst werden kann und keine Ressourcen verloren gehen)
< li>Fügen Sie die Verbindungszeichenfolge-URL, den Benutzernamen und das Passwort aus dem ein JNDI-Datenquelle in die Methode DriverManager.getConnection(...)
[*]Geben Sie die Verbindung höflich/korrekt wieder in den Pool frei.
Und wenn ich diesen Prozess nicht richtig eingerichtet habe, korrigieren Sie mich bitte zunächst hinsichtlich des allgemeinen Ansatzes!