需要帮助了解Tomcat与WepApp的类加载问题。

问题描述 投票:0回答:1

我有3个webapps在Tomcat上运行,它们都使用ActiveMQ。他们都使用ActiveMQ。因此,我把activemq-all.jar放在Tomcat的lib文件夹中。

在我的webapp中使用Spring,我有connectionfactories和listeners。它们是在我的webapp启动时创建的,但是它们使用的类是从lib文件夹中的jar加载的。

我想我看到的是,任何activemq类的依赖关系,都必须存在于Tomcat库中。例如,像xbean-spring.jar这样的东西,或者任何Spring类。即使我把它们放在我的 war lib 中,我也得到 ClassNotFound。

为什么会这样?我以为我的webapp的classloader是一组来自我的war的类和驻留在tomcat库中的类的联合,但似乎如果类驻留在tomcat库中,它不能 "看到 "我的war库中的类。

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

java spring tomcat activemq classloader
1个回答
0
投票

Tomcat有 几个类加载器你把罐子放进去 普通类加载器

通常情况下,应用类不应该放在这里。

它只能搜索自身或父类加载器中的类,这不包括你的webapp。

在Java环境中,类加载器以父子树的形式排列。通常情况下,当一个类加载器被要求加载一个特定的类或资源时,它首先会将请求委托给一个父类加载器,只有当父类加载器找不到所请求的类或资源时,才会在自己的资源库中查找。

  Bootstrap
      |
   System
      |
   Common
   /     \
Webapp1   Webapp2 ...
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.