在Apache Tomcat 9、JNDI Resources How-To页面底部有一个部分,Adding Custom Resource Factories .
要编写一个实现 JNDI 服务提供者 javax.naming.spi.ObjectFactory
接口(interface)的类,文档说:
You will need to compile this class against a class path that includes all of the JAR files in the $CATALINA_HOME/lib directory.
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 捆绑到我的 Web 应用程序生成的 WAR 文件中。
最佳答案
文档中不太清楚真正需要什么,但一般来说,您的 pom.xml
中会有如下内容:
<dependency>
<groupId>jndi</groupId>
<artifactId>jndi</artifactId>
<version>1.2.1</version>
<scope>provided</scope>
</dependency>
关键是提供的
范围。这意味着该库是编译所必需的,但不应作为打包的一部分包含在内。换句话说,它是由目标部署环境提供的。
话虽如此,您提供的链接用于编写自定义 资源工厂。它不会是一个 .war
文件,而是一个 .jar
,您可以将其安装到 Tomcat 中以对其进行扩展。那是你想要的吗?如果您只需要执行 JNDI 查找,那么我提供的 XML block 将适用于您的代码。
关于java - 在 Maven 中指定 Apache Tomcat "lib"文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58358592/