WebSphere Liberty and Eclipselink SDO
我正在将一个旧的IBM Process Server应用程序移植到IBM WebSphere Liberty。它包含大量基于服务数据对象(SDO)的代码。我有一些很好的工作代码,使用JDK8作为独立Java运行。我使用的是eclipselink 2.7.7,特别是2个jar文件WebSphere Liberty and Eclipselink SDO,websphere,Websphere,我正在将一个旧的IBM Process Server应用程序移植到IBM WebSphere Liberty。它包含大量基于服务数据对象(SDO)的代码。我有一些很好的工作代码,使用JDK8作为独立Java运行。我使用的是eclipselink 2.7.7,特别是2个jar文件 eclipselink.jar commonj.sdo_2.1.1v20111051852.jar 我已将此代码构建到一个Servlet中以处理SOAP请求,并将其与其他代码一起打包到一个EAR文件中,该文件是我在I
eclipselink.jar
commonj.sdo_2.1.1v20111051852.jar
我已将此代码构建到一个Servlet中以处理SOAP请求,并将其与其他代码一起打包到一个EAR文件中,该文件是我在IBMWebSphereLiberty 20下部署的。它不起作用。似乎与《日食》的自由版有冲突
如果我将代码部署为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下运行良好,所以我不想破坏它
感谢您的帮助/指导。。。这是一个漫长的周六
附言:
我尝试只使用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)
捕获到异常:org.eclipse.persistence.internal.security.privilegedacceshelper.getSystemPropertyBoolean(Ljava/lang/String;Z)Z
java.lang.NoSuchMethodError:org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getSystemPropertyBoolean(Ljava/lang/String;Z)Z
位于org.eclipse.persistence.sdo.helper.sdohelpercentext(sdohelpercentext.java:93)
位于org.eclipse.persistence.sdo.helper.sdohelpercentext$defaultHelperContextExtresolver.getHelperContext(sdohelpercentext.java:1432)
位于org.eclipse.persistence.sdo.helper.sdohelpercentext.getHelperContext(sdohelpercentext.java:492)
位于org.eclipse.persistence.sdo.helper.sdohelpercentext.getHelperContext(sdohelpercentext.java:471)
位于org.eclipse.persistence.sdo.helper.sdohelpercentext.getHelperContext(sdohelpercentext.java:456)
位于org.eclipse.persistence.sdo.helper.delegator.SDOXMLHelperDelegator.getXMLHelperDelegate(SDOXMLHelperDelegator.java:178)
位于org.eclipse.persistence.sdo.helper.delegator.SDOXMLHelperDelegator.load(SDOXMLHelperDelegator.java:78)
位于com.ebs.solas2021.port.adapter.ui.SOAPRequestHandler.main(SOAPRequestHandler.java:237)
在新的一天里,在寒冷的光线下重新阅读文档时,您会发现令人惊讶的事情。事实证明,可以在Liberty上安装JPA2.2容器,同时提供自己的EclipseLink实现。工作起来很有魅力
此处记录: