我将在 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/