Weblogic 10共享库未显示在引用应用程序中

时间:2010-01-26 15:45:51

标签: deployment java-ee weblogic shared-libraries classpath

在WebLogic 10.0上,我使用WLS的“共享J2EE库”(http://download.oracle.com/docs/cd/E11035_01/wls100/programming/libraries.html)功能对一些需要在多个耳朵中访问的jar进行分组。这些jar驻留在系统类路径上,我尝试将它们从那里移到共享库中。

我的问题是:

  • 在WLS Web管理控制台中,单击Deployments下的共享库(名为“theSharedLib”)
  • “引用此库的应用程序”列表为空
  • 我也可以使用weblogic.Deployer取消部署lib,但是在下次重启服务器时,它会抱怨在加载引用应用程序时缺少引用的库

所以看起来在启动时引用会生效,但在运行时WLS会以某种方式忘记这一点(我在这里需要一些魔术吗?)。

我也可以做到这一点:

  • 取消部署theSharedLib(无怨言)
  • 取消部署someReferencingApp(ok)
  • 部署someReferencingApp(错误!缺少lib)
  • 部署theSharedLib(ok)
  • 部署someReferencingApp(确定;应用程序在Web控制台中列出;但是在下次重新启动时,或在随机的其他部署之后,列表再次变空)

展开目录格式的共享lib ear的结构:

  • META-INF
    • MANIFEST.MF
    • application.xml中
  • LIB
    • (我需要分享的东西作为罐子)
  • dummyejb.jar(因为它必须包含某些内容)

MANIFEST.MF包含:
..
Extension-Name:theSharedLib
规格 - 版本:1.0
实施 - 版本:1.0.0
..

application.xml包含基本元素(一个dummyejb ejb模块)。

引用应用的结构:

其中,它有META-INF / weblogic-application.xml,包含:

<?xml version =“1.0”?>
< WebLogic的应用程序>
 <库-REF>
  <库名称>&theSharedLib LT; /库名称>
  <规范版本> 1.0< /规范版本>
  <实施版本> 1.0.0< /实现版本>
  <精确匹配>真< /精确匹配>
 < /库-REF>
< / WebLogic的应用程序>

可能是什么问题?我应该在共享库或引用应用程序中做任何其他事情,以便(1)正确地引用列表,最重要的是(2)在应用程序之间共享jar?

我假设lib中的共享jar是使用共享库中的每个应用程序使用相同的类加载器加载的,其行为与sys类路径行为非常相似。你能否确认一下?

谢谢!

2 个答案:

答案 0 :(得分:1)

感谢您提供的信息。实际上这就是我发现的:

1)如果引用应用程序在部署时失败,引用应用程序的列表将从Web控制台中消失(奇怪 - 可能有更深层次的原因,但现在这一点非常一致)。

2)不幸的是,共享库中的类是由不同引用应用程序的类加载器加载的,因此这样就无法共享例如用于应用程序间通信目的的接口类。

答案 1 :(得分:0)

我认为共享库(它是一个EAR)的MANIFEST.MF应该包含一个引用lib中JAR的Class-Path条目(这告诉类加载器在哪里查找类)。像这样:

Class-Path: lib/foo.jar lib/bar.jar lib/foobar.jar