java - 将 MySQL 连接器 JAR 放在我的 WAR 的 WEB-INF/lib 中而不是在 $CATALINA_HOME/common/lib 中?

标签 java mysql tomcat maven-2

我将在 Tomcat 5.5.x 服务器上使用 MySQL 和 Hibernate。

我是否必须mysql-connector-java-[version]-bin.jar放入$CATALINA_HOME/common/lib/或者我可以将它放在我的 WAR 文件中的 WEB-INF/lib 和我的其他库依赖项中吗?

将它放在 WEB-INF/lib 的 WAR 中会更容易,因为我可以通过这种方式使用 Maven 存储库获取它。将它放在那里而不是放在 Tomcat 的公共(public)库目录中有什么大的缺点吗?

最佳答案

如果您的 jar 是通用的,那么它会在 tomcat 中全局加载。每个 webapp 都能看到它。如果你把它放在你的网络应用程序中,只有你的网络应用程序可以看到它。我假设 Boris 指的是如果您的全局 tomcat 配置的某些部分加载了需要 mysql 连接(如连接池)的东西,那么它将需要 jdbc 驱动程序,因此它需要共同的。否则,不。

我相信您可以在 tomcat 配置中设置安全配置,将其配置存储在数据库中。如果你使用它,它需要一个驱动程序。

为什么你想要 webapp/WEB-INF/lib 中的东西?好吧,因为它是模块化的,所以它是您的 web 应用程序的一部分,如果您将 web 应用程序移动到其他地方,它不需要它的额外部分,这是您的 tomcat 安装的一部分。如果您可以将您的 webapp 直接放在一个 stock tomcat 安装中,那么维护就会容易得多。另一个原因——如果您有多个 Web 应用程序,它们将共同使用 jar,这可能会导致库冲突和版本问题。

一般来说,尽可能少地放置共同点。即使您只有一个应用。

关于java - 将 MySQL 连接器 JAR 放在我的 WAR 的 WEB-INF/lib 中而不是在 $CATALINA_HOME/common/lib 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472896/

相关文章:

mysqlslap phpmyadmin

tomcat - 触发tomcat contentType检测

java - 如何使用 Java 接口(interface)比较器进行通用合并排序?

java - 文件传输xmpp中主机="null"

mysql - 更新表中的列以等于同一表中的另一列 WHERE NOT 语法

Mysql循环触发器

java - 在java中使用线程实现runnable时,形状不移动

java - tess4j jna 不满意链接错误

java - 无法将 Tomcat 设置为项目的服务器

jquery - 如何配置 Tomcat7 以使用 Jquery?