Liberty 上的 Camel 应用程序 - JAXB 编组
Camel app on Liberty - JAXB Marshalling
我是 运行 Liberty Profile 服务器上的 Camel 应用程序。我正在从队列中获取消息,解组、映射然后编组。这工作正常,但现在我收到一个错误,指出未找到 JAXBDataBinding 方法 getContextualNamespaceMap。
我认为这是因为服务器库中有旧版本的 jar,但我不知道为什么它开始使用它。
IBM Jar: com.ibm.ws.org.apache.cxf-rt-databinding-jaxb.2.6.2_1.0.12
如果我最后一次 class 加载切换到父级,问题就解决了,但这是一种非常 hacky 的修复方法,不是一个很好的选择。还有其他想法吗?我在想我的构建中的某些功能或其他依赖项可能已经引入了这个 jar。
因此看起来 getContextualNamespaceMap 仅在 org.apache.cxf-rt-databinding-jaxb 的较新版本中可用JAR 而不是 Liberty 中可用的。
可能 parentLast 是最好的选择。 (您已经知道如何执行此操作,但它已记录在案 (here)。如果它导致其他一些问题,那么请跟进另一个问题。
我想可以想象,您可以查看应用程序中打包的任何内容,并尝试删除一组内容并从 Liberty 运行时中获取它们,以避免 运行 在 parentLast 模式。例如。如果你只是引用 getContextualNamespaceMap 因为你的应用程序中有其他代码但是有一些替代路径你可以完全在 Liberty 提供的模块中使用,那么理论上你可以.
我对 CXF 或 Camel 模块中的代码路径不够熟悉 "stack",无法猜测这是否是现实世界中的可能性。
javaee7 功能包含与服务器版本冲突的 jaxsw 版本。删除 javaee7 功能部件已解决此问题。我是否会把它加回去还有待观察。
我是 运行 Liberty Profile 服务器上的 Camel 应用程序。我正在从队列中获取消息,解组、映射然后编组。这工作正常,但现在我收到一个错误,指出未找到 JAXBDataBinding 方法 getContextualNamespaceMap。 我认为这是因为服务器库中有旧版本的 jar,但我不知道为什么它开始使用它。
IBM Jar: com.ibm.ws.org.apache.cxf-rt-databinding-jaxb.2.6.2_1.0.12
如果我最后一次 class 加载切换到父级,问题就解决了,但这是一种非常 hacky 的修复方法,不是一个很好的选择。还有其他想法吗?我在想我的构建中的某些功能或其他依赖项可能已经引入了这个 jar。
因此看起来 getContextualNamespaceMap 仅在 org.apache.cxf-rt-databinding-jaxb 的较新版本中可用JAR 而不是 Liberty 中可用的。
可能 parentLast 是最好的选择。 (您已经知道如何执行此操作,但它已记录在案 (here)。如果它导致其他一些问题,那么请跟进另一个问题。
我想可以想象,您可以查看应用程序中打包的任何内容,并尝试删除一组内容并从 Liberty 运行时中获取它们,以避免 运行 在 parentLast 模式。例如。如果你只是引用 getContextualNamespaceMap 因为你的应用程序中有其他代码但是有一些替代路径你可以完全在 Liberty 提供的模块中使用,那么理论上你可以.
我对 CXF 或 Camel 模块中的代码路径不够熟悉 "stack",无法猜测这是否是现实世界中的可能性。
javaee7 功能包含与服务器版本冲突的 jaxsw 版本。删除 javaee7 功能部件已解决此问题。我是否会把它加回去还有待观察。