gpt4 book ai didi

websphere - 尝试使用在 WebSphere Application Server 上工作的 CXF 获取 Camel 示例

转载 作者:行者123 更新时间:2023-12-02 05:16:11 25 4
gpt4 key购买 nike

我正在尝试使用 CXF 在 WebSphere 上运行 apache camel 应用程序。

发现了一些错误

引起:java.lang.IncompatibleClassChangeError:org.apache.neethi.AssertionBuilderFactory 在 java.lang.ClassLoader.defineClassImpl( native 方法) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:262) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69)

这是因为 org.apache.neethi 类是从 WAS 运行时加载的,而不是从 WEB-INF/lib 加载的 neeti3.0.2.jar

这是来自类加载器的信息:

类加载:org.apache.neethi.builders.AssertionBuilder 来自:文件:/D:/Tools/WebSphere/AppServer/plugins/org.apache.axis2.jar

Web 应用程序配置已更改为使用类加载器策略。它被设置为 parent 最后。 然而这个类(class)似乎在使用家长优先政策。

CXF 包中是否有任何内容可以覆盖此政策?

我注意到使用 Axis2 和 WAS

http://axis.apache.org/axis2/java/core/docs/app_server.html

为避免与 WebSphere 的 JAX-WS 运行时发生冲突,针对 Axis2 提到了一些额外的步骤。是否需要类似的东西才能让它工作?

谢谢莽卢

最佳答案

不是特定于 Camel,但我们正在处理类似的问题。

1) 如果需要,您可以使用独立的共享库。这似乎修复了类加载器通过 OSGi 拉入这些其他库的问题。此解决方案并不适合所有人。

2) 设置 PARENT_LAST 的应用程序时,请确保您在正确的位置进行设置。如果你的 war 中有 jar ,那么你必须在 WAR 模块 上设置 PARENT_LAST,而不是应用程序。在 WAS 控制台 > Applications > Application Type > websphere enterprise applications > MyEAR > manage Modules > MyWar > 更改“Class loader order”并使其成为“parent last”

3) 进行更改后,您可以导出 ear 文件。在耳边,有一个文件 META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.xml 有这个配置。对于 maven ear,您可以将其放入 src/main/application 以将其与 ear 一起打包。

希望对您有所帮助。祝你好运。

关于websphere - 尝试使用在 WebSphere Application Server 上工作的 CXF 获取 Camel 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14598352/

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