需要帮助了解 Tomcat vs WepApp 类加载问题



>我在Tomcat上运行了3个Web应用程序。他们都使用ActiveMQ。出于这个原因,我把activemq-all.jar放在Tomcat/lib文件夹中。

在我的网络应用程序中使用Spring,我有连接工厂和监听器。它们是在我的 web 应用程序启动时创建的,但它们使用的类是从 lib 文件夹中的 jar 加载的。

我想我看到的是,activemq-classes 具有的任何依赖项也必须驻留在 tomcat lib 中。例如,诸如xbean-spring.jar或任何Spring类之类的东西。即使我的战争库中有它们,我也会得到 ClassNotFound。

为什么?我认为我的 webapp 的类加载器是我的战争中的一组联合类,以及驻留在 tomcat lib 中的类,但似乎如果该类驻留在 tomcat lib 中,它就无法"看到"我的战争库中的类。

如果有人能帮我解决这个问题,我将不胜感激。

Tomcat 有几个类加载器,你把 jar 放在 Common 类加载器

通常,应用程序类不应放置在此处

它只能搜索类本身或父类加载器,其中不包括您的 Web 应用程序

在 Java 环境中,类装入器排列在父子树中。通常,当要求类装入器装入特定类或资源时,它首先将请求委托给父类装入器,然后仅当父类装入器找不到所请求的类或资源时才查找自己的存储库。

Bootstrap
|
System
|
Common
/     
Webapp1   Webapp2 ...

最新更新