1

Наш поставщик рекомендует поместить JDBC-файл MySQL в каталог Tomcat 6 «$ CATALINA_HOME/endorsed».

Мне неясно, какова цель этой рекомендации.

В Classloader Howto для Tomcat 6 говорится об "одобренном" механизме:

Java поддерживает механизм, называемый «механизм одобрения утвержденных стандартов», позволяющий заменять API, созданные вне JCP (то есть DOM и SAX из W3C). Он также может быть использован для обновления реализации синтаксического анализатора XML. Для получения дополнительной информации см .:http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html.

Tomcat использует этот механизм, включив параметр системного свойства -Djava.endorsed.dirs = $ JAVA_ENDORSED_DIRS в командную строку, которая запускает контейнер. Значением по умолчанию для этой опции является $ CATALINA_HOME/ одобрено. Этот одобренный каталог не создается по умолчанию.

Таким образом, каталог «$ CATALINA_HOME/endorsed», если он создан и активирован в командной строке, может использоваться для переопределения реализаций API, которые поставляются с JDK. Но JDK не поставляется с реализацией по умолчанию для JDBC.

Если кто-то хотел загрузить реализацию MySQL JDBC в загрузчик классов «выше, чем загрузчик классов веб-приложения», в данном случае это "обычный" загрузчик классов:

Иерархия загрузчиков классов Tomcat 6

... можно поместить его в «$ CATALINA_HOME/lib» или «$ CATALINA_BASE/lib», как описано в Howto Classloader.

Мой поставщик рекомендует плохую практику?

Примечание для себя

В Tomcat 5 иерархия Classloader была следующей:

Иерархия загрузчиков классов Tomcat 5

Слава Богу за упрощения!

1 ответ1

1

Да это он.

Цель этой рекомендации - сделать JAR доступным для всего сервера и, возможно, быть загруженным раньше всего в общем каталоге, поскольку представленная иерархия также определяет, что загружается первым.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .