在类加载器中挖掘后,会出现一个问题。
假设我们有一个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目录中,是真的吗?
答案 0 :(得分:0)
将尽可能多的jar文件放入 war 文件的 lib 目录中。这样,您就可以在Web应用程序之间实现最佳隔离,并且不会出现有关同一库的不同版本的冲突。
如果您需要在两个Web应用程序之间共享全局数据(这很少见),请将该库放入Tomcat的 lib 目录中。您可能需要为用于访问数据库的库执行此操作,例如ojdbc6.jar。
永远不要在CLASSPATH上添加其他库。