gpt4 book ai didi

java - Weblogic 应用程序从同一 web 应用程序中的其他 jar 加载实用程序 jar 类

转载 作者:行者123 更新时间:2023-12-01 04:29:05 25 4
gpt4 key购买 nike

我在 Weblogic 中的应用程序中遇到了一些类加载问题的难题。我的代码中有些地方的类依赖于其他 jar 中的类,我一定缺少一些基本的东西。

根据我发现的信息,如果两个 jar 都在类路径上,这应该不是问题,但在 Weblogic 上的 Java EE 应用程序上下文中,这似乎更加微妙。

我有一只耳朵,MyApp.ear

MyApp.ear 包含多个 Web 应用程序(war)以及一大堆实用程序 jar 和 EJB。结构是这样的(我不控制它)。

MyApp.ear
MyWebApp.war
UtilJar1.jar
UtilJar2.jar
etc...

假设 UtilJar1 中有一些类从 UtilJar2 导入类。什么 MANIFEST.MF 应该指定两个 jar 都应该位于类路径上?耳朵?网络应用程序的? UtilJar1 的?

根据反复试验(Weblogic 10.3.2),这似乎有效的唯一方法是在 UtilJar1 的 list 类路径中定义 UtilJar2。但我本以为在 web 应用程序的上下文中,web 应用程序的类路径将用于该 web 应用程序中发生的任何类加载?相反,除非在第一个 jar 的类路径中指定了第二个 jar,否则我会看到 NoClassDefFound。

最佳答案

以下是 Oracle 文档的摘录:

J2EE 规范提供了 list 类路径条目作为模块指定它需要类的辅助 JAR 的方法。

如果您有其他支持 JAR 文件作为 EJB JAR 或 WAR 文件的一部分,则只需使用此 list 类路径条目。

请仔细阅读以下文档中的 list 类路径部分 -

Class Loading

J2ee 部署存档 [EAR] 是不同模块的集合,每个模块在各自的 list 文件中声明依赖关系。

根据我的理解,EAR 内的每个模块 [war、ejb、jar] 都有自己的类加载器,它们是 EAR 类加载器的子级。子类加载器只能看到其父类加载器,并且不知道同级类加载器,除非您在 list 文件中声明依赖项。

enter image description here

即使 WAR list 中有一个条目,utilit1.jar 也不知道 utility2.jar,您必须在 Utility1.jar 的 Manifest 文件中明确提及依赖关系。

关于java - Weblogic 应用程序从同一 web 应用程序中的其他 jar 加载实用程序 jar 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18179379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com