【问题标题】:Weblogic EAR ClassloadingWeblogic EAR 类加载
【发布时间】:2009-08-25 01:19:50
【问题描述】:

我在 WebLogic 节点中部署 EAR,在引导程序 (startWeblogicServer.bat) 类路径中定义了许多 jar。问题是我的耳朵和引导程序包含相同 jar 的不同版本,不仅如此,某些 jar 还包含提取的第三方库,这些库的版本也与导致各种类路径错误的 WebLogic 引导 jar 不同。

我知道您可以在 EAR 应用程序 xml 中设置首选 jar,但是对于包含提取的第三方库的 jar,在理解所有依赖项方面,这可能非常繁琐。

我需要在这里采取正确的方法吗?我是否以错误的方式思考这个问题?任何帮助将不胜感激!

到目前为止,prefer-web-inf-classes 已被推荐但不会工作,因为我没有部署 WAR,prefer-application-packages 也是我们目前使用的,但仍然存在上述问题......那里的建议?谢谢!

【问题讨论】:

  • 也许 serverfault 会是一个好地方

标签: java weblogic classpath


【解决方案1】:

我认为您应该从服务器引导区域中删除 JAR,并让每个域使用域级类加载器从其各自的 EAR 加载 JAR。

你已经知道这是真的,因为你采取的方法会给你带来问题。

这样做的唯一理由是尝试通过不在多个域中复制 JAR 来节省一些磁盘空间。我说磁盘空间很便宜,而且一直在变便宜。通用 JAR 意味着通用依赖项,您不希望仅仅因为某个公民需要它就强制 WebLogic 实例上的每个域都必须升级 JAR。

从服务器引导程序中删除 JAR 并在每个 EAR 中复制您需要的 JAR。使每个 EAR、每个域独立于其他域。

更新:

您需要拥有自己的服务器。

或者将 标签添加到您的配置中。

详情请咨询this

【讨论】:

  • 感谢您的回答,问题是我无法控制 WebLogic Server,即我们部署在另一组服务器中,而我的团队无法控制他们的引导程序。事实上,我已经推荐了这种方法,他们不想让步……我想到了“依赖地狱”这个词。
  • 这有帮助,但另一个问题是我们没有部署战争,只是一个耳朵......据我了解你必须使用的耳朵: 但是这个强制你必须列出你想要的所有包和类: antlr.* (例如)问题仍然存在,antlr 可能有我们不知道的其他依赖项这与 weblogic bootstrap 的相同。如果我们有一个或两个库没问题,但我们有很多。解决这些依赖关系被证明是一项挑战。
  • 我没说这很容易。您需要与 WebLogic 实例的所有者交谈并讨论他们给您带来的困难。您可能会聘请部署在您的盒子上的其他应用程序的所有者,看看他们的体验如何。如果你们都同意,这有助于证明你的观点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
相关资源
最近更新 更多