在运行我的应用程序时,我很困惑。我的应用程序由EJB和servlet组成。我需要知道,这些应用程序类型的类加载器是相同还是不同。我使用weblogic作为应用程序容器。 请帮帮我。
答案 0 :(得分:2)
我的应用程序中有一个类依赖于单例和类加载器。问题是当类加载器发生更改时我的类实例发生了变化,我需要在整个生命周期中使用相同的类实例
是的,所有的webapp类加载器都会委派一个系统类加载器。
要使您的类进入该类加载器,您需要确保它位于相关的类路径中。例如,使用Tomcat,您可以将JAR文件放入$ CATALINA_HOME / lib(...如果我记得正确的话)。
有人说过,我不相信在多个webapps之间共享应用程序单例是很好的设计。
答案 1 :(得分:1)
您会发现每个应用程序通常都会加载到它自己的类加载器实例中。类加载器将成为Web容器提供的类,但每个应用程序运行时都会有一个实例。这允许应用程序彼此隔离,并且可以加载许多实例,无论它们是使用静态/类变量还是单例等。
答案 2 :(得分:1)
WebLogic使用分层类加载器。您的应用程序如何打包?它是EAR还是WAR + JAR?
This link会很有帮助。