3

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

4

3 回答 3

1

我不相信您可以通过 MANIFEST.MF 的 ClassPath 属性控制 APP-INF/lib 顺序。

根据客户的不同,我已经通过几种不同的方式做到了这一点。

  1. 将补丁 jar 添加到 WLS 的系统类路径。如果您检查 domain/bin/setDomainEnv.sh(或 .cmd),应该有 pre、post、patch 类路径环境变量。您可以尝试在此处将补丁 jar 添加到类路径中。这使其可用于所有应用程序,这可能不是您的客户想要的。
  2. 修补 somejar.jar 并将其命名为 somejar-patched.jar。将 APP-INF/lib 中的 jar 替换为“-patched”版本。
于 2009-09-24T11:30:22.280 回答
0

我认为类加载器会读取 JAR,因为它们是您的应用程序需要的。

我有两个问题要问你:

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

更新:

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

于 2009-09-24T10:08:50.930 回答
0

我同意达菲莫

您不必担心类加载的顺序,如果这是由于类冲突,您始终可以使用 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>
于 2018-03-23T17:03:10.397 回答