Ich verwende tomcat-jdbc
Pool in Standard spring-boot
Setup. Ich möchte jedes Mal einen benutzerdefinierten Java-Code ausführen, wenn eine neue JDBC-Verbindung im Pool eingerichtet wird und bevor sie zum ersten Mal verwendet wird. Wie geht es, und wenn es mehrere Möglichkeiten gibt, welche ist die Beste?Spring/Tomcat-Jdbc Pool - neue Verbindung Listener
Antwort
Nun, ich kann von zwei Möglichkeiten denken:
Ihre eigene Wrapper-Klasse erstellen - entweder durch
DataSource
Klasse Tomcat Erweiterung oder durch JavaDataSource
Schnittstelle und das Delegieren an den umwickeltenDataSource
Umsetzung - und dann die Logik hinzufügen Sie möchten die gewünschten Methoden und registrieren Sie eine Bohne in einer Klasse durch manuelle Instanziierung Ihrertomcat-jdbc
(für Beispiele, wie Sie dies tun, beziehen Sie sich auf DataSourceConfiguration.Tomcat class) und wickeln Sie es mit Ihrer Klasse.Erstellen Sie einen Aspekt und verwenden Sie die AOP-Unterstützung von Spring, um Anrufe auf
getConnection
abzufangen. DaDataSource
Klasse im javax Paket ist, ich glaube, Sie werden AspectJ verwenden müssen, und für einige Beispiele zu this link
Mein Vorschlag mit der ersten Option zu gehen, wäre beziehen, sollte es Ihnen weniger Kopfschmerzen geben , hier ist ein kleines Beispiel, wie Sie Ihre Wrapper-Bean definieren würde:
@Bean
public DataSource dataSource(DataSourceProperties properties) {
return new MyDataSourceWrapper(tomcatDataSourceFrom(properties));
}
private org.apache.tomcat.jdbc.pool.DataSource tomcatDataSourceFrom(
DataSourceProperties properties) {
// manual instantiation like in DataSourceConfiguration.Tomcat class
}
Zur Erweiterung bereits akzeptierte Antwort, Sie Frühling AOP ohne volle AspectJ, wenn Sie diese verwenden können, verwenden pointcut als:
@AfterReturning(pointcut = "execution(* org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection())")
public void afterConnectionEstablished() {
...
}
- 1. Tomcat JDBC Verbindung Pool (Freigabe Verbindung)
- 2. SQLAlchemy/Flask/PostgreSQL Pool Verbindung
- 3. Verbindung in c3p0 Verbindung Pool freigeben
- 4. Verbindung Pool für Schienen 5
- 5. c3p0 Verbindung Pool saveorupdate mit Blob Daten
- 6. Boost-Pool Allocator langsamer als neue
- 7. c3p0 Akronym Herkunft - jdbc Verbindung Pool Name
- 8. SignalR Verbindung Handhabung auf App Pool Recycling
- 9. Wie Debuggen Rails Verbindung Pool-Verwendung?
- 10. „Abrufen Timeout eine Verbindung aus dem Pool“
- 11. Hibernate session.close() keine Verbindung zum Pool
- 12. netbeans neue Verbindung - keine Verbindung herstellen
- 13. Verwenden Sie einzelne Verbindung Pool für Cluster vs mehrere Verbindung Pool für jeden Kindprozess in mongodb-native NodeJS
- 14. LINKE VERBINDUNG ALS neue Spalte?
- 15. String Pool vs Konstante Pool
- 16. Rückkehr db Verbindung zu HikariCP Pool mit Slick 3.1.x
- 17. Timeout warten auf unbewegtes Objekt Apache Verbindung Pool
- 18. node-mysql - Wann die Verbindung zurück in den Pool freigeben
- 19. Amazon S3-Dienst ConnectionPoolTimeoutException: Timeout wartet auf Verbindung vom Pool
- 20. Verbindungspooling: Wie IDisposable korrekt zu TCP-Verbindung zurück zu Pool
- 21. Was ist die Verbindung von Autorelease-Pool zu Garbage Collection?
- 22. PHP5-FPM sekundären Pool nicht gestartet (111: Verbindung abgelehnt)
- 23. Probleme bei der Verbindung mit Cassandra Pool von Spring-Anwendung
- 24. Android Nkzawa SocketIO trennen und neue Verbindung herstellen
- 25. Datei Listener-Prozess auf Tomcat
- 26. Unterschied zwischen shareable und nicht freigegebene Verbindung in jdbc Verbindung Pool?
- 27. Existierende Verbindung wird geschlossen, wenn neue TCP-Verbindungen hergestellt werden
- 28. TLS-Sitzung Wiederverwendung über neue TCP-Verbindung
- 29. TOra neue Verbindung Orakel 11g Ausgabe
- 30. Django Datenbankverbindungen pool mit psycopg2.pool