【问题标题】:How to set order of jars in WebLogic?如何在 WebLogic 中设置 jar 的顺序?
【发布时间】:2011-11-03 11:51:11
【问题描述】:

在我的应用程序中,我使用的是 Joda-Time 2.0,但在我的 WebLogic 路径中有库 Joda-Time 1.2。

如何更改顺序并告诉 WebLogic 使用我的库?现在它正在使用自己的库,而不是我的。我刚刚向 Joda-Time 2.0 添加了一个 Maven 项目依赖项。

【问题讨论】:

    标签: jar weblogic


    【解决方案1】:

    有几种方法可以做到这一点。

    1. 在您的域的 bin 文件夹中更改您的 startWeblogic.cmd(sh),查找类路径设置并在任何其他 WebLogic jar 之前添加新的 joda
    2. 如上所述,如果应用程序是 Web 应用程序并选择首选战争中的任何库,则可以更改 weblogic.xml。
    3. 如果您使用的是企业应用程序,您可以在 weblogic-application.xml 中设置以下选项:

      <prefer-application-packages>
          <package-name>org.apache.*</package-name>
          <package-name>antlr.*</package-name>
      </prefer-application-packages>
      

    并在那里为 joda 设置你的包名。

    请注意,第一个选项可能会导致 WebLogic 出现奇怪的行为。

    请注意,由于某种原因,我无法让代码与 XML 一起使用。

    【讨论】:

    • 感谢另一个解决方案,但第一个更优雅,它可以工作,但无论如何都感谢
    • 请注意,它与优雅无关。根据您的项目具体情况,可能需要选项 2 和 3。 JoseK 确实适用于 web 容器,但如果您在 ejb 容器中需要它,它将失败。但如果它适合您,它就是您正在寻找的解决方案
    • 在这个上+1;选项 2 包括其他答案本身,选项 3 是我的首选方式,因为它允许您指定在应用程序级别加载哪些库。使用 prefer-web-inf-classes 是一种全有或全无的方法,并且在加载本应在服务器级别共享的库时会导致大量重复。
    • 是的,你是对的,当我设置 true 以提供所有包时抛出另一个异常,所以我只使用了 joda 时间,everythink 工作正常,非常感谢
    • 选项 3 必须在此标记内 如参考文献docs.oracle.com/cd/E24329_01/web.1211/e21049/… 所述
    【解决方案2】:

    当你的班级出现在你的战争中时,WEB-INF/lib,

    您可以尝试使用 weblogic.xml 设置来强制 WEB-INF/lib 类优先于 server/lib 中的类加载

    <container-descriptor>     
    <prefer-web-inf-classes>true</prefer-web-inf-classes>   
    </container-descriptor> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-13
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      相关资源
      最近更新 更多