【问题标题】:WebSphere Liberty and Eclipselink SDOWebSphere Liberty 和 Eclipselink SDO
【发布时间】:2021-02-20 21:07:29
【问题描述】:

我正在将旧的 IBM Process Server 应用程序移植到 IBM WebSphere Liberty。它包含大量基于服务数据对象 (SDO) 的代码。我有一些很好的工作代码,作为独立的 Java 运行,使用 JDK8。我正在使用 eclipselink 2.7.7,特别是 2 个 jar 文件;

eclipselink.jar 
commonj.sdo_2.1.1v20111051852.jar

我已将此代码构建到一个 Servlet 中以处理 SOAP 请求,并将它与其他代码一起打包到一个 EAR 文件中,我在 IBM WebSphere Liberty 20 下部署了该文件。它不起作用。似乎与 EclipseLink 的 Liberty 版本存在冲突。

如果我将代码部署为 WAR 文件,并添加“PARENT_LAST”类加载器,则代码可以正常工作。

但是,如果我尝试将代码部署在 EAR 文件中,并为 ear 文件设置“PARENT_LAST”类加载器,则会收到此错误;

[ERROR   ] CWWKZ0106E: Could not start web application S21.
[ERROR   ] CWWKZ0002E: An exception occurred while starting the application S21. The exception message was: com.ibm.ws.container.service.state.StateChangeException: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.eclipse.persistence.jpa.PersistenceProvider.getProviderUtil()Ljavax/persistence/spi/ProviderUtil;" the class loader (instance of com/ibm/ws/classloading/internal/ParentLastClassLoader) of the current class, org/eclipse/persistence/jpa/PersistenceProvider, and the class loader (instance of org/eclipse/osgi/internal/loader/EquinoxClassLoader) for interface javax/persistence/spi/PersistenceProvider have different Class objects for the type javax/persistence/spi/ProviderUtil used in the signature

有谁知道我是否可以用我的 2.7.7 版本替换 EclipseLink 的 IBM Liberty 实现? 我的应用程序还使用 JPA,它在 Liberty 下运行良好,所以我不想破坏它。

感谢任何帮助/指导...这是一个很长的星期六。

PS: 我尝试仅使用 SDO 库 (commonj.sdo_2.1.1v20111051852.jar) 运行 java 代码,并依靠 WebSphere Liberty 运行时 jar 来提供 Eclipselink 功能,但出现以下错误,这就是为什么我开始添加上面提到的 Eclipselink / SDO jar 的“匹配对”;

Caught Exception : org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getSystemPropertyBoolean(Ljava/lang/String;Z)Z
java.lang.NoSuchMethodError: org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getSystemPropertyBoolean(Ljava/lang/String;Z)Z
at org.eclipse.persistence.sdo.helper.SDOHelperContext.<init>(SDOHelperContext.java:93)
at org.eclipse.persistence.sdo.helper.SDOHelperContext$DefaultHelperContextResolver.getHelperContext(SDOHelperContext.java:1432)
at org.eclipse.persistence.sdo.helper.SDOHelperContext.getHelperContext(SDOHelperContext.java:492)
at org.eclipse.persistence.sdo.helper.SDOHelperContext.getHelperContext(SDOHelperContext.java:471)
at org.eclipse.persistence.sdo.helper.SDOHelperContext.getHelperContext(SDOHelperContext.java:456)
at org.eclipse.persistence.sdo.helper.delegates.SDOXMLHelperDelegator.getXMLHelperDelegate(SDOXMLHelperDelegator.java:178)
at org.eclipse.persistence.sdo.helper.delegates.SDOXMLHelperDelegator.load(SDOXMLHelperDelegator.java:78)
at com.ebs.solas2021.port.adapter.ui.SOAPRequestHandler.main(SOAPRequestHandler.java:237)

【问题讨论】:

    标签: websphere


    【解决方案1】:

    当您在新的一天的冷光下重新阅读文档时,您会发现令人惊讶的东西。事实证明,可以在 Liberty 上安装 JPA 2.2 Container,同时提供自己的 EclipseLink 实现。像魅力一样工作。

    在此处记录:https://openliberty.io/blog/2018/06/29/full_java_ee_8_liberty_18002.html

    【讨论】:

      猜你喜欢
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 2013-02-03
      相关资源
      最近更新 更多