【问题标题】:Place MySQL connector JAR in WEB-INF/lib of my WAR instead of in $CATALINA_HOME/common/lib?将 MySQL 连接器 JAR 放在我的 WAR 的 WEB-INF/lib 中,而不是放在 $CATALINA_HOME/common/lib 中?
【发布时间】:2009-01-23 13:38:00
【问题描述】:
我即将在 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 的公共库目录中是否有什么大的缺点?
【问题讨论】:
标签:
java
mysql
tomcat
maven-2
【解决方案1】:
如果你的 jar 是通用的,那么它会在 tomcat 中全局加载。每个 webapp 都能看到它。如果你把它放在你的 webapp 中,只有你的 webapp 可以看到它。我假设 Boris 指的是如果你的全局 tomcat 配置的某些部分加载了需要 mysql 连接的东西(比如连接池),那么它将需要 jdbc 驱动程序,所以它会共同需要它。否则,没有。
我相信您可以在将其配置存储在数据库中的 tomcat 配置中设置一个安全配置。如果你使用它,它需要一个驱动程序。
你为什么想要 webapp/WEB-INF/lib 中的东西?好吧,因为它是模块化的,它是您的 web 应用程序的一部分,如果您将 web 应用程序移动到其他地方,它不需要额外的部分,这是您的 tomcat 安装的一部分。如果您可以将您的 web 应用程序直接放在一个股票 tomcat 安装中,那么维护会容易得多。另一个原因——如果你有多个 webapps,它们都会使用共同的 jars,这可能会导致库冲突和版本问题。
一般来说,尽可能少地分享共同点。即使您只有一个应用程序。