在EAR的APP-INF / lib中加载JAR的顺序

时间:2009-09-24 10:01:53

标签: java jar weblogic packaging ear

在EAR中的META-INF目录中添加带有Class-Path属性的MANIFEST.MF文件是否会影响位于WebLogic 8.1下的APP-INF / lib中的JAR的加载顺序?

3 个答案:

答案 0 :(得分:1)

我不相信你可以通过MANIFEST.MF的ClassPath属性来控制APP-INF / lib命令。

我已经做了几种不同的方式,具体取决于客户。

  1. 将补丁jar添加到WLS的系统类路径中。如果检查domain / bin / setDomainEnv.sh(或.cmd),则应该预先发布补丁类路径环境变量。您可以尝试将补丁jar添加到类路径中。这使得它可用于所有应用程序,这可能不是您的客户想要的。
  2. Patch somejar.jar&将它命名为somejar-patched.jar。用“-patched”版本替换APP-INF / lib中的jar。

答案 1 :(得分:0)

我认为类加载器会读取应用程序所需的JAR。

我有两个问题要问你:

  1. 您为什么还在使用WebLogic 8.1?它现在不支持,当前版本是10.x.你落后了两个版本。这是一个尚未迁移的遗留应用吗?升级后你会得到很大的提升,因为你将使用带有-server选项的JDK 5或6。我推荐它。
  2. 你为什么要关心装货的顺序?对于您的应用程序来说,容器如何加载和管理bean应该是无关紧要的。
  3. 更新:

    这听起来不一样,几乎就像你与服务器JAR发生冲突一样。对于这种情况,存在prefer-web-inf-classes设置。这是你的意思吗?

答案 2 :(得分:0)

我同意duffymo

您不必担心类加载的顺序,如果这是由于冲突的类,您总是可以使用Maven或类似的工具从Jars中排除冲突的类。

例如,这是添加jersey-spring4 jar的一个非常简单的例子,但我排除了它的依赖关系,所以我可以使用不同版本的spring框架库。

<dependency>
  <groupId>org.glassfish.jersey.ext</groupId>
  <artifactId>jersey-spring4</artifactId>
  <exclusions>
    <exclusion>
      <artifactId>spring-web</artifactId>
      <groupId>org.springframework</groupId>
    </exclusion>
    <exclusion>
      <artifactId>spring-aop</artifactId>
      <groupId>org.springframework</groupId>
    </exclusion>
    <exclusion>
      <artifactId>spring-context</artifactId>
      <groupId>org.springframework</groupId>
    </exclusion>
    <exclusion>
      <artifactId>spring-beans</artifactId>
      <groupId>org.springframework</groupId>
    </exclusion>
  </exclusions>
</dependency>