EJB依赖版本的冲突在太阳应用程序服务器
题
要总结这个问题我遇到的,我有一个EJB它使用一个版本的图书馆(让我们叫它dep-vA.jar).dep-vA.jar 封装在根于提供一个用户提供无缝的罐子文件。域lib文件夹中的应用程序服务器都包含版B相同的图书馆(让我们叫它dep-vB.jar).打电话时EJB,我得到一个错误dep-vB.jar 文件加载,而不是dep-vA.jar.
我猜第一部分的这个问题是,不太阳一个应用程序服务器v9.1分离前总彼此?我的印象是,它不会。但它似乎是另一个应用程序载dep-vB.jar 这EJB是直接使用它没有载入自己。
第二个问题是,如果应用程序服务器不会隔离制属性会影响,它载的依赖,从EJB的罐子文件之前,在应用程序服务器的lib文件夹?我的印象是,这也是真实的,但也许不是...
是任何人都熟悉足够的太阳应用程序服务器解释为什么dep-vB.jar 正在加载的而不是dep-vA.jar?是否有任何方法得到它的负载dep-vA.jar 不需改变什么,在应用程序服务器的lib文件夹?(我会毫不犹豫地做任何可能影响的其他应用程序服务器)
谢谢。
解决方案
我猜第一部分的这个问题是,不太阳一个应用程序服务器v9.1分离前总彼此?我的印象是,它不会。但它似乎是另一个应用程序载dep-vB.jar 这EJB是直接使用它没有载入自己。
根据 无从谈起 (这是我们开发人员), Java EE规范做 不 任务舱载的隔离间的模块的一个耳朵这样的行为可以从一个不同的应用程序服务器到另一个.与太阳之一,我理解 文档 是EJB的罐子隔离开。
第二个问题是,如果应用程序服务器不会隔离制属性会影响,它载的依赖,从EJB的罐子文件之前,在应用程序服务器的lib文件夹?我的印象是,这也是真实的,但也许不是...
这是一个父母的第一个战略(并且据我所知,太阳一个允许改变模式委派 为webapp只).
这就是说,发生什么,如果你表 dep-vA.jar
在 Class-Path
入口的 MANIFEST.MF
于提供一个用户提供无缝的-罐子?
也参看
- 第2章舱装载机 太阳Java系统应用程序服务器平台版9的开发人员指南
- 包装EJB3的应用程序
其他提示
我还没有使用,特别是服务器,但我确实知道,在WebSphere,有一种选择使用PARENT_FIRST或PARENT_LAST类加载.你要寻找一个相当于PARENT_LAST哪类从耳朵之前,首先要给服务器。
我们认为,这样一种配置能够在任何应用程序服务器,你应该总是能够强制执行程序具体的罐子要被装在任何其他人。