Укажите папку Apache Tomcat "lib" в Maven - PullRequest
0 голосов
/ 13 октября 2019

In Apache Tomcat 9, страница JNDI-ресурсов с практическими рекомендациями содержит раздел внизу, Добавление пользовательских фабрик ресурсов.

Чтобы написать класс, который реализует интерфейс поставщика услуг JNDI javax.naming.spi.ObjectFactory, в документе говорится:

Вам нужно будет скомпилировать этот класс по пути к классу, который включает всеJAR-файлы в каталоге $ CATALINA_HOME / lib.

Эта папка lib содержит:

websocket-api.jar
tomcat-jni.jar
tomcat-util-scan.jar
tomcat-util.jar
tomcat-websocket.jar
tomcat-i18n-pt-BR.jar
tomcat-i18n-ru.jar
tomcat-i18n-zh-CN.jar
tomcat-jdbc.jar
tomcat-i18n-ja.jar
tomcat-i18n-ko.jar
tomcat-i18n-cs.jar
tomcat-i18n-de.jar
tomcat-i18n-es.jar
tomcat-i18n-fr.jar
jaspic-api.jar
jsp-api.jar
servlet-api.jar
tomcat-api.jar
tomcat-coyote.jar
tomcat-dbcp.jar
el-api.jar
jasper-el.jar
jasper.jar
catalina-tribes.jar
catalina.jar
ecj-4.12.jar
catalina-ha.jar
catalina-storeconfig.jar
annotations-api.jar
catalina-ant.jar

➥ Как мне удовлетворить это требование в проекте, управляемом Maven?

Я, конечно, не хочу, чтобы все эти jar-файлы были включены в получившийся WAR-файл моего веб-приложения.

1 Ответ

1 голос
/ 13 октября 2019

Из документов немного неясно, что действительно нужно , но, как правило, в вашем pom.xml будет что-то вроде следующего:

<dependency>
    <groupId>jndi</groupId>
    <artifactId>jndi</artifactId>
    <version>1.2.1</version>
    <scope>provided</scope>
</dependency>

Ключобласть действия providedЭто означает, что библиотека необходима для компиляции, но не должна быть включена как часть упаковки. Другими словами, это обеспечивается средой развертывания назначения.

Сказав это, вы предоставляете ссылку для написания пользовательской фабрики ресурсов. Это будет не файл .war, а файл .jar, который вы установите в Tomcat для его расширения. Это то, что вы после? Если вам просто нужно выполнить поиск JNDI, то предоставленный мною фрагмент XML будет работать для вашего кода.

...