Bru*_*mmo 1 deployment jboss ejb jndi classloader
我有几个单独的应用程序项目(EAR),包含多个EJB,我想将它们部署到同一个JBoss服务器上.现在,一些项目可能具有相同的EJB,但版本不同.在类似的情况下,一些项目可能使用相同"普通"类的不同版本(即在VM中加载的类,没有JNDI查找).
使用OC4J,这似乎不是一个问题,但现在使用JBoss,我得到的印象是所有内容都存在于相同的"名称空间"(或类加载器)中.我在这个假设中是否正确?
基本上,我想做(或确保)的是两件事:
从执行EJB的JNDI查找的客户端,我希望能够指示它所在的应用程序,以便返回正确的EJB版本.
在EJB中,在实例化类时,我想确保该类是使用与EJB相同的应用程序(EAR)部署的类.
我想我读过你可以为EJB配置一些"隔离"属性,我猜错了可能会解决我的第二点吗?
JBoss的默认行为是使用平面类加载器.这样可以减少占用空间,但正如您所发现的那样,它会使部署多个应用程序变得麻烦.
谢天谢地,修复很简单.在目录中的ear-deployer.xml文件中deploy,确保设置了以下参数:
<attribute name="Isolated">true</attribute>
Run Code Online (Sandbox Code Playgroud)
这将为每个部署的EAR提供自己的类加载器空间.它仍然可以从JBoss lib目录访问东西,但是部署的EAR彼此是不可见的.
| 归档时间: |
|
| 查看次数: |
3506 次 |
| 最近记录: |