【发布时间】: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