gpt4 book ai didi

java - classloader和web应用以及war文件的lib目录

转载 作者:行者123 更新时间:2023-11-28 23:37:12 27 4
gpt4 key购买 nike

挖完classloader,问题来了。

假设我们有一个 library.jar,我们可以把它放在 CLASSPATH 中,它将被系统的 CLASSPATH 加载器加载。

我们也可以把它放在war文件的lib目录下。它将由单独的 Web 应用程序类加载器加载。

假设 library.jar 有一个带有静态成员字段的类:

static a=1; //member of some class in library.jar

如果 library.jar 由 CLASSPATH 加载器加载,则意味着这个静态成员对于所有 Web 应用程序来说都是一样的。也许这会干扰!!

所以,我认为最好的方法是将 library.jar 放在 lib 目录中,是这样吗?

最佳答案

将尽可能多的 jar 文件放入 war 文件的 lib 目录中。这样,您就可以在 Web 应用程序之间实现最佳隔离,并且不会因同一库的不同版本而发生冲突。

如果您需要在两个 Web 应用程序之间共享全局数据(这种情况很少见),则将库放入 Tomcat 的 lib 目录中。您可能需要为用于访问数据库的库执行此操作,例如 ojdbc6.jar。

永远不要在 CLASSPATH 上放置额外的库。

关于java - classloader和web应用以及war文件的lib目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23549889/

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