是不同应用程序的类加载器可以不同?

时间:2010-08-17 06:57:02

标签: java classloader weblogic11g

在运行我的应用程序时,我很困惑。我的应用程序由EJB和servlet组成。我需要知道,这些应用程序类型的类加载器是相同还是不同。我使用weblogic作为应用程序容器。 请帮帮我。

3 个答案:

答案 0 :(得分:2)

  

我的应用程序中有一个类依赖于单例和类加载器。问题是当类加载器发生更改时我的类实例发生了变化,我需要在整个生命周期中使用相同的类实例

是的,所有的webapp类加载器都会委派一个系统类加载器。

要使您的类进入该类加载器,您需要确保它位于相关的类路径中。例如,使用Tomcat,您可以将JAR文件放入$ CATALINA_HOME / lib(...如果我记得正确的话)。

有人说过,我不相信在多个webapps之间共享应用程序单例是很好的设计。

答案 1 :(得分:1)

您会发现每个应用程序通常都会加载到它自己的类加载器实例中。类加载器将成为Web容器提供的类,但每个应用程序运行时都会有一个实例。这允许应用程序彼此隔离,并且可以加载许多实例,无论它们是使用静态/类变量还是单例等。

答案 2 :(得分:1)

WebLogic使用分层类加载器。您的应用程序如何打包?它是EAR还是WAR + JAR?

This link会很有帮助。