【问题标题】:Migrating from Weblogic 11 to Weblogic 12, getting ClassNotFoundException从 Weblogic 11 迁移到 Weblogic 12,得到 ClassNotFoundException
【发布时间】:2020-05-15 07:57:42
【问题描述】:

我们正在将一个包含多个 ear 文件的应用程序从 Weblogic 11 迁移到 Weblogic 12。其中三个 ear 文件运行良好,当我们部署第四个文件时,它在启动时抛出 ClassNotFoundException。

三个运行耳朵中的两个在这方面并不重要。所以,情况是 A.ear 运行良好,B.ear 无法启动。

B.ears pom.xml 将 A.ear 的一个模块称为与提供和 ejb-client 的依赖项,使用 maven-ear-plugin 将模块称为 ejbClientModule。

由于 maven-ear-plugin,在 B.ear 中创建了一个 jar,以镜像 A.ear 中的模块,在其名称中添加“-client”,但它仅包含 A 中模块的一个子集.ear.

其中一个类派生自 ClassNotFoundException 所指的类。

该应用程序在 Weblogic 11 上以这种方式工作。

谁能告诉我如何解决这个问题并使应用程序在 Weblogic 12 上运行?

【问题讨论】:

  • 在 B.ear 中,您正在使用来自 A.ear 的模块。并提供范围。你得到 ClassNotfoundException .. 对吗?这是你的问题?此异常发生在部署期间。这不是运行时异常。因此,您需要在部署期间在 B.ear 中使用来自 A.ear 的名为 classes 的相同包。删除提供的 scrope,让依赖模块在 lib 文件夹中创建,然后部署 appl B.ear 并检查。
  • 我试过了,还是一样。我尝试手动将文件放入 B.ear 中,看看会出现什么其他问题。然后它丢失了另一个文件,并且通过更改范围也不会改变该错误。你知道为什么吗?
  • 请提供您的旧工作 EAR 模块扩展的快照和有故障的新 EAR 模块的快照。也给你的 pom.xml。并告诉我你得到的错误。还有带有异常堆栈跟踪的部署日志。给个全图,不然很难说。

标签: java migration ejb weblogic weblogic12c


【解决方案1】:

正如我们所想,weblogic 中不允许 ear 文件之间的这种深度连接,即使在 weblogic 11 中,类加载器层次结构根据 oracles 文档无法在另一个 ear jar 中找到祖先类。它在 weblogic 11 中工作,似乎是一个错误,已在 weblogic 12 中修复。

我们的解决方案是将两个ear文件合二为一。

【讨论】:

    猜你喜欢
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2013-05-27
    相关资源
    最近更新 更多