gpt4 book ai didi

java - Tomcat 从 {$catalina_home}/(app instance)/lib 加载 JDBC 连接器 jar 但如果在项目 pom 中则不会

转载 作者:行者123 更新时间:2023-11-28 23:31:32 25 4
gpt4 key购买 nike

我正在使用 Tomcat 7.0.53

我有一个应用程序需要为它的 JDBC 连接加载 mysql-connector-java-5.0.8.jar。如果我将连接器 jar 放在 {$catalina_home}/(app instance)/lib/目录中,一切都可以正常加载。如果我使用 maven 将 jar 导入到我的 war 中,或者将 jar 放在 {$catalina_home/lib/那么它将不会加载。

我有一个相当典型的 war 设置,导入的 jar(s) 放在/WEB-INF/lib/目录中。然而,与我通常从事的项目有一点不同。不同数据源的上下文文件作为显式文件位于 webapp/{app}/META-INF/context.xml 中。

理想情况下,我想使用 Maven 将连接器 jar 放入我的 war 中,所以如果有人能告诉我:1. 为什么会这样?2. 一个可能的修复,以便连接器 jar 可以通过 maven 导入?

将不胜感激。

最佳答案

当您让 Tomcat 管理您的数据源并通过 JNDI 使其可用时,它会使用自己的类加载器来进行初始化,而不是用于 webapp 本身的类加载器。这意味着为了初始化数据源,所有需要的类都必须在 Tomcat 的类路径中(例如,在它的 lib 目录中)。

Tomcat 这样做是为了将容器与潜在的错误或恶意网络应用程序隔离开来,并促进加载和卸载网络应用程序的能力。

关于java - Tomcat 从 {$catalina_home}/(app instance)/lib 加载 JDBC 连接器 jar 但如果在项目 pom 中则不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29703486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com