【发布时间】:2010-01-26 15:45:50
【问题描述】:
在 WebLogic 10.0 上,我使用 WLS 的“共享 J2EE 库”(http://download.oracle.com/docs/cd/E11035_01/wls100/programming/libraries.html) 功能对一些需要在多个耳朵中访问的 jar 进行分组。这些 jars 驻留在系统类路径中,我尝试将它们从那里移动到共享库中。
我的问题是:
- 在 WLS Web 管理控制台中,单击 Deployments 下的共享库(名为“theSharedLib”)
- “引用此库的应用程序”列表为空
- 我也可以使用 weblogic.Deployer 取消部署该库,但在下次重新启动服务器时,它会抱怨在加载引用应用程序时缺少引用的库
所以似乎在启动时引用生效,但在运行时 WLS 不知何故忘记了这一点(我需要一些魔术吗?)。
我也可以做到这一点:
- 取消部署 theSharedLib(不抱怨)
- 取消部署 someReferenceApp (ok)
- 部署 someReferenceApp(错误!缺少库)
- 部署SharedLib(好的)
- 部署 someReferencingApp(好的;应用程序在 Web 控制台中列出;但是在下次重新启动时,或在随机其他部署之后,列表再次变为空)
分解目录格式的共享库ear结构:
- 元信息
- 清单.MF
- application.xml
- 库
- (我需要以罐子的形式分享的东西)
- dummyejb.jar(因为它必须包含一些东西)
MANIFEST.MF 包含:
..
扩展名:theSharedLib
规格-版本:1.0
实施版本:1.0.0
..
application.xml 包含基本元素(一个 dummyejb ejb 模块)。
引用应用的结构:
其中包括 META-INF/weblogic-application.xml,包含:
1.0规范版本>
真精确匹配>
可能是什么问题?我是否应该在共享库或引用应用程序中做任何其他事情,以 (1) 正确设置引用列表,最重要的是 (2) 在应用程序之间共享 jar?
我假设 lib 中的共享 jar 是使用共享 lib 中每个应用程序的相同类加载器加载的,其行为非常类似于 sys 类路径行为。您能否也确认一下?
谢谢!
【问题讨论】:
-
很抱歉(因为您花时间输入了一个冗长的问题),但目前尚不清楚您的共享库是否实际上部署得很好。你能澄清一下问题吗?
-
@Pascal:是的,我使用 weblogic.Deployer ... -library 成功部署了共享库。在 Web 控制台中,已部署库的状态为“库”。在未部署共享库的情况下,引用应用程序在域启动时会抱怨并获得“新建”状态,但即使已部署共享库,也会看到所描述的效果。
-
很奇怪,事情看起来不错。 MANIFEST.MF 中是否引用了 lib 中的 JAR?
-
@Pascal:不,他们不是,不是吗?在哪个清单文件中,共享库或应用程序(以及如何)?能否请您扩展一下?
标签: deployment jakarta-ee weblogic shared-libraries classpath