Glassfish:如何让服务器对多个应用程序使用单个类加载器

Glassfish:如何让服务器对多个应用程序使用单个类加载器,glassfish,classloader,Glassfish,Classloader,我有几个web/ejb应用程序。这些应用程序使用一些公共库,并且应该共享这些库中的类实例。 但应用程序是独立部署的,因此将所有应用程序打包到EAR是不可接受的。 我认为问题在于每个应用程序使用单独的类装入器。 如何将单个类装入器用作一组应用程序 不同的应用程序依赖于不同的库,所以我需要一种方法,它不会为域上的所有应用程序共享库,而只为某些确切的应用程序共享库 当我将公共jar放置到%domain%/lib-所有都可以。但是这个jar在域上的所有应用程序之间共享。 当我试图将公共jar放置到%do

我有几个web/ejb应用程序。这些应用程序使用一些公共库,并且应该共享这些库中的类实例。 但应用程序是独立部署的,因此将所有应用程序打包到EAR是不可接受的。 我认为问题在于每个应用程序使用单独的类装入器。 如何将单个类装入器用作一组应用程序

不同的应用程序依赖于不同的库,所以我需要一种方法,它不会为域上的所有应用程序共享库,而只为某些确切的应用程序共享库

当我将公共jar放置到%domain%/lib-所有都可以。但是这个jar在域上的所有应用程序之间共享。 当我试图将公共jar放置到%domain%/lib/applibs并在部署时指定--libraries属性时,我遇到了异常

java.lang.ClassCastException: a.FirstDao cannot be cast to a.FirstDao
我在这里读到:

如果有多个应用程序或模块 参考相同的库、类 在这些库中,自动 共享。这样可以减少内存 封装外形并允许共享静态 信息


这是否意味着类应该能够被强制转换?

我建议使用domain/lib目录。虽然它使您的库可用于该域上运行的所有应用程序,但如果其他应用程序不使用这些库,这真的很重要吗

如果您想消除这种暴露,您更希望将您的应用程序组作为一个单独的EAR交付,以将库的使用隔离到这些应用程序