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

发布于 2024-08-05 21:22:20 字数 110 浏览 10 评论 0原文

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

Will adding a MANIFEST.MF file with Class-Path attribute to META-INF directory inside EAR influence the order of loading of JARs located in APP-INF/lib under WebLogic 8.1?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

满栀 2024-08-12 21:22:20

我不相信您可以通过 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”版本。

I don't believe you can control the APP-INF/lib order via ClassPath attribute of MANIFEST.MF.

I've done this a couple different ways, depending on the client.

  1. Add the patch jar to the system classpath for WLS. If you examine domain/bin/setDomainEnv.sh (or .cmd) there should pre, post, patch classpath environment variables. You could try to add your patch jar to the classpath here. This makes it available for all apps, which might not be what your client wants.
  2. Patch somejar.jar & name it somejar-patched.jar. Replace the jar in APP-INF/lib with the "-patched" version.
难以启齿的温柔 2024-08-12 21:22:20

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

我有两个问题想问你:

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

更新:

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

I thought the class loader read JARs as they're required by your application.

I have two questions for you:

  1. Why are you still using WebLogic 8.1? It's off support now, and the current version is 10.x. You're two versions behind. Is this a legacy app that hasn't migrated yet? You'll get a big boost by upgrading, because you'll be using JDK 5 or 6 with the -server option. I'd recommend it.
  2. Why should you care about the order of loading? It should be immaterial to your app how the container loads and manages the beans.

UPDATE:

That sounds different, almost as if you were having conflicts with server JARs. There's that prefer-web-inf-classes setting for that situation. Is that what you mean?

留蓝 2024-08-12 21:22:20

我同意 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>

I agree with duffymo

You shouldn't have to worry about the order of class loading, if this is due to conflicting classes you can always exclude the conflicting classes from Jars using Maven or a similar tool.

For instance this is a very simple example of adding jersey-spring4 jar but I'm excluding its dependencies so I can use a different version of the spring framework library.

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文