Das „empfohlene“ Verzeichnis von Tomcat für das JDBC-Implementierungs-JAR verwenden?

Das „empfohlene“ Verzeichnis von Tomcat für das JDBC-Implementierungs-JAR verwenden?

Unser Anbieter empfiehlt, das MySQL JDBC-JAR im Tomcat 6-Verzeichnis „$CATALINA_HOME/endorsed“ zu platzieren.

Mir ist nicht klar, was der Zweck dieser Empfehlung ist.

DerKlassenlader Howtofür Tomcat 6 heißt es über den „empfohlenen“ Mechanismus:

Java unterstützt einen Mechanismus namens „Endorsed Standards Override Mechanism“, der den Ersatz von APIs ermöglicht, die außerhalb des JCP erstellt wurden (z. B. DOM und SAX von W3C). Er kann auch zum Aktualisieren der XML-Parser-Implementierung verwendet werden. Weitere Informationen finden Sie unter: http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html.

Tomcat nutzt diesen Mechanismus, indem er die Systemeigenschaftseinstellung -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS in die Befehlszeile einfügt, die den Container startet. Der Standardwert dieser Option ist $CATALINA_HOME/endorsed. Dieses empfohlene Verzeichnis wird standardmäßig nicht erstellt.

Daher kann das Verzeichnis „$CATALINA_HOME/endorsed“, wenn es erstellt und in der Befehlszeile aktiviert wird, verwendet werden, um Implementierungen von APIs zu überschreiben, die mit dem JDK geliefert werden. Das JDK verfügt jedoch nicht über eine Standardimplementierung für JDBC.

Wenn man die MySQL JDBC-Implementierung in einen Classloader laden möchte, der „höher als ein Webapp-Classloader“ ist, in diesem Fall den „allgemeinen“ Classloader:

Tomcat 6-Klassenladerhierarchie

...man würde es in „$CATALINA_HOME/lib“ oder „$CATALINA_BASE/lib“ einfügen, wie im Classloader-Howto beschrieben.

Empfiehlt mein Anbieter schlechte Praktiken?

Notiz an mich selbst

In Tomcat 5Klassenladerhierarchiewar wie folgt:

Tomcat 5-Klassenladerhierarchie

Gott sei Dank für die Vereinfachungen!

Antwort1

Ja, ist er.

Der Zweck dieser Empfehlung besteht darin, das JAR serverweit verfügbar zu machen und es möglicherweise vor allem anderen im gemeinsamen Verzeichnis zu laden, da die dargestellte Hierarchie auch vorgibt, was zuerst geladen wird.

verwandte Informationen