0

当我开发任何 Web 应用程序时,我添加了许多我的代码依赖于它们的 jar。我想知道当我在服务器上部署战争时如何使用这些 jars 的服务器或容器,如果我将它们直接放在服务器的模块上,这对于发布或部署会是一个优势吗?!

4

2 回答 2

0

当你的代码被执行时,容器将在你的战争中查看依赖的 jar 是否可用。如果它在你的战争中找不到依赖的jar,那么容器将遍历它的树,看看它是否可以在容器本身的某个地方找到依赖。通过配置,可以反转,所以最后检查战争。

战争应该是自包含的,依赖的 jar 在战争的 WEB-INF/lib 文件夹中。配置容器(可能是默认值)以首先检查战争。这保持了隔离,有助于保持应用程序随着时间的推移保持稳定。例如,容器可能已更新,但您的应用程序不需要更新。

将这些依赖 jar 部署到战争之外,将容器内的某个位置部署到共享文件夹,可能会使这些依赖 jar 对所有部署的应用程序和/或容器本身可见。这最终会导致 jar 版本冲突和类加载器问题。不要这样做!

于 2017-04-26T13:50:51.237 回答
0

在服务器类路径上使用 jar 依赖项没有任何优势。这将迫使您依赖服务器本身,这在处理持续交付时不是一个好主意。

顺便说一句,您应该知道每个war文件在部署时都有自己的类路径,所以如果您部署一些war,假设在 Tomcat 服务器上,它将使用它自己的包含必要 jar 的类路径。容器(在本例中为 Tomcat)对这些 jars 一无所知,但您的应用程序会。

于 2017-04-26T13:49:11.793 回答