将具有 Class-Path 属性的 MANIFEST.MF 文件添加到 EAR 内的 META-INF 目录会影响 WebLogic 8.1 下位于 APP-INF/lib 中的 JAR 的加载顺序吗?
问问题
6584 次
3 回答
1
我不相信您可以通过 MANIFEST.MF 的 ClassPath 属性控制 APP-INF/lib 顺序。
根据客户的不同,我已经通过几种不同的方式做到了这一点。
- 将补丁 jar 添加到 WLS 的系统类路径。如果您检查 domain/bin/setDomainEnv.sh(或 .cmd),应该有 pre、post、patch 类路径环境变量。您可以尝试在此处将补丁 jar 添加到类路径中。这使其可用于所有应用程序,这可能不是您的客户想要的。
- 修补 somejar.jar 并将其命名为 somejar-patched.jar。将 APP-INF/lib 中的 jar 替换为“-patched”版本。
于 2009-09-24T11:30:22.280 回答
0
我认为类加载器会读取 JAR,因为它们是您的应用程序需要的。
我有两个问题要问你:
- 为什么还在使用 WebLogic 8.1?现在不支持了,当前版本是 10.x。你落后了两个版本。这是尚未迁移的旧版应用程序吗?您将通过升级获得很大的提升,因为您将使用带有 -server 选项的 JDK 5 或 6。我会推荐它。
- 为什么要关心加载顺序?容器如何加载和管理 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 回答