Java 如何让不同的web应用程序共享同一个类加载器?
我们有一套应用程序。现在,每个应用程序都可以单独部署,也可以任意组合部署。问题是,每一场战争都有自己的图书馆副本。每一场战争中都有许多(许多)重复Java 如何让不同的web应用程序共享同一个类加载器?,java,tomcat,classloader,contextclassloader,Java,Tomcat,Classloader,Contextclassloader,我们有一套应用程序。现在,每个应用程序都可以单独部署,也可以任意组合部署。问题是,每一场战争都有自己的图书馆副本。每一场战争中都有许多(许多)重复 我知道如果我们把lib放在Tomcat的公共区域,它们都可以共享这些资源。但是,是否有办法让每个应用程序在启动时检查另一个应用程序是否已经加载了其尝试加载的类,以及另一个应用程序是否已经加载了,使用这些,而不是重新加载自己的版本?如果这些应用程序试图访问此类的不同版本,您不会遇到问题吗?获得更多内存,这比您想象的麻烦要少得多。你想造成这样一种情况,即
我知道如果我们把lib放在Tomcat的公共区域,它们都可以共享这些资源。但是,是否有办法让每个应用程序在启动时检查另一个应用程序是否已经加载了其尝试加载的类,以及另一个应用程序是否已经加载了,使用这些,而不是重新加载自己的版本?如果这些应用程序试图访问此类的不同版本,您不会遇到问题吗?获得更多内存,这比您想象的麻烦要少得多。你想造成这样一种情况,即如果不升级所有这些组件,就无法升级其中一个吗?@nyamiouthegaleanstrope这在我们的部署方式中不是一个风险。NathanHughes现在的情况是,它们都共享同一个pom文件,因此在升级时它们已经绑定在一起。如果这些应用程序尝试访问该类的不同版本,您不会遇到问题吗?获得更多内存,这比您想象的麻烦要小得多。你想造成这样一种情况,即如果不升级所有这些组件,就无法升级其中一个吗?@nyamiouthegaleanstrope这在我们的部署方式中不是一个风险。NathanHughes现在的情况是,它们都共享同一pom文件,所以在升级时它们已经绑定在一起了。