2017-01-22 5 views
0

Gibt es eine Möglichkeit, c3p0 als Verbindungsanbieter zum Hibernate-Repository-Dropwizard zu verwenden? ich die Eigenschaften von c3p0 in die dropwizard Konfigurationsdatei hinzugefügt, aber ich glaube nicht, dass etwas getan .. Auch ich die Hibernate c3p0 Abhängigkeit der pom-Datei, ich bin Experte SoDropwizard und c3p0-Integration

+0

https://github.com/mtakaki/dropwizard-hikaricp - Ein Beispielcode für die Integration von HicariCP als Datenbankverbindungspool. – zloster

Antwort

0

hinzugefügt kaum hier, Ihre Frage ist das erste Mal, dass ich Dropwizard begegnet bin.

Aber ein kurzer Blick auf seinen Code suggeriert, dass es auf einem DataSourceFactory beruht, der hardcodiert ist, um den Verbindungspool von tomcat-jdbc zu verwenden.

Da es jedoch looks like Sie konfigurieren Hibernate (und othe db-abhängige Module) direkt von Ihrem eigenen DataSourceFactory Konstruktion, und da diese Klasse nicht-finalen ist, ich glaube, Sie könnten nur Ihre eigene Unterklasse schreiben und seine Build-Methode überschreiben, um zurückzukehren eine geeignet konfigurierte c3p0 DataSource, oder (einfacher), lassen Sie die c3p0 DataSource ihre Konfiguration aus einer c3p0.properties Datei (oder einem der verschiedenen Konfigurationsstile c3p0 unterstützt). Die geerbten Getter und Setter wären dann bedeutungslos - diese Eigenschaften würden ignoriert und Versuche, die DataSource mit den json- oder yaml-Werkzeugen des Dropwizards zu konfigurieren, würden ignoriert. (Sie könnten diese Getter und Setter übersteuern, um eine Ausnahme auszulösen, um Sie daran zu erinnern, dass sie nicht implementiert sind, aber Sie müssen sicherstellen, dass sie nicht aufgerufen werden, auch wenn Sie sie nicht explizit konfigurieren.) Der einzige schwierige Teil wäre, die MetricRegistry zu konfigurieren, nehme ich an, Statistiken über den Pool zu behalten und zu überwachen, der Sie interessiert. Aber das wäre nicht zu schwer: Siehe die start() - Methode von ManagedPooledDataSource für eine Vorlage, und alle Statistiken, die Sie auf einem c3p0 PooledDataSource überwachen können.

Möglicherweise müssen Sie DataSourceFactory nicht erweitern. Es könnte ausreichen, nur eine separate Klasse zu schreiben, die PooledDataSourceFactory implementiert. Außerdem gibt es eine Klasse mit der Bezeichnung DatabaseConfiguration, deren letzte Bestätigungsnachricht "Funktion zum Hinzufügen von benutzerdefinierten DB-Verbindungspools hinzufügen" ist. Aber ich kann keine Beispiele oder Dokumentation dieser Klasse finden. Es ist ziemlich klar, wie Sie c3p0 integrieren können, indem Sie einfach DataSourceFactory erweitern, und andere haben suggested that.