0

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

4

3 回答 3

2

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

是的,有一个系统类加载器,所有 webapp 类加载器都将委托给它。

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

话虽如此,我不相信在多个 webapps 之间共享应用程序单例是好的设计。

于 2010-08-17T07:32:06.767 回答
1

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

于 2010-08-17T07:03:03.303 回答
1

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

这个链接会很有帮助。

于 2010-08-17T07:04:30.677 回答