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

时间:2011-04-21 16:12:10

标签: glassfish classloader

我有几个web / ejb应用程序。这些应用程序使用一些公共库,并且应该共享这些库中的类的实例。 但应用程序正在独立部署,因此将它们打包到EAR是不可接受的。 我想问题是每个应用程序使用单独的类加载器。 如何让AS为一组应用程序使用单类加载器?

不同的应用程序依赖于不同的库,因此我需要一种不会为域上的所有应用程序共享库的方法,但仅限于某些确切的应用程序。

当我将普通jar放到%domain%/ lib 时 - 一切正常。但是该jar在域上的所有应用程序之间共享。 当我尝试将普通jar放置到%domain%/ lib / applibs 并指定 - 库属性时,我得到了异常

java.lang.ClassCastException: a.FirstDao cannot be cast to a.FirstDao

这里http://download.oracle.com/docs/cd/E19879-01/820-4336/6nfqd2b1t/index.html我读到了:

  

如果有多个应用程序或模块   引用相同的库,类   在这些库中是自动的   共享。这可以减少内存   足迹并允许共享静态   信息。

这是否意味着应该能够投放课程?

1 个答案:

答案 0 :(得分:0)

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

如果您想消除这种风险,您更希望将您的应用程序组作为单独的EAR提供,以将库使用情况隔离到这些应用程序。