Frage

Kann mir jemand mit dieser Ausnahme helfen: generasacodicetagpre.

und bietet auch die mögliche Lösung dafür.?

Vielen Dank im Voraus ...

War es hilfreich?

Lösung

Das Grundproblem ist, dass Tomcat für jede WebApp einen neuen Klassenlader erstellt und den Klassenlader deaktiviert, wenn Sie die App zurücksetzen, z. durch heiße Bereitstellung einer neuen Version. C3P0 erstellt Helferfäden. Wenn C3P0 in den Klassenloader des Web-App geladen wurde und dann die App zurückgesetzt wird, sind die Threads von C3P0 möglicherweise noch live und halten Referenzen auf Objekte, die aus dem nun ausgeladenen Klassifloader geladen sind. Dies führt zum Fehler, den Sie sehen, wenn eine neue Klasse angezeigt wird geladen.

Wechselwirkungen zwischen Multithreaded Components und Tomcat's "Heißes" Klassenlastsystem kann anspruchsvoll sein. Einige Vorschläge:

1) Wenn Ihre Web-App ihre eigene C3P0-DataSource (z. B. in einem KontextListener) konstruiert, stellen Sie sicher, dass sich die DataSource auch anschließend befindet () ed, wenn die App heruntergefahren ist (in demselben Kontextlistener)

2) Versuchen Sie, C3P0 und Ihre JDBC-Treiberklassen in etwas anderes als den Web-App-spezifischen Klassenloader geladen zu haben. Setzen Sie die C3P0-JAR-Datei, die Änderung der Commons-JAVA-JAR-Datei, und Ihre JDBC-Treiber-JAR-Datei, in der sich entweder das Common-, System- oder Bootstrap-Classloader erstellt. Stellen Sie sicher, dass Sie diese Dateien mit dem Verzeichnis Ihres WebApp auslassen, da der Web-App-Classloader zuerst ausprobiert wird. Siehe http://tomcat.apache.org/tomcat-6.0- Doc / Class-Loader-Howto.html für mehr.

Ich hoffe das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top