title: WebSphere Liberty and Eclipselink SDO
body: <p>I am porting an old IBM Process Server application to IBM WebSphere Liberty. It contains a lot of code based on Service Data Objects (SDO). I have some good working code, running as standalone Java, using JDK8. I am using eclipselink 2.7.7, specifically 2 jar files;</p>
  <pre><code>eclipselink.jar 
  commonj.sdo_2.1.1v20111051852.jar
  </code></pre>
  <p>I have built this code into a Servlet to handle SOAP requests, and packaged it, along with other code, into an EAR file, which I deployed under IBM WebSphere Liberty 20. It doesn't work. There seems to be a clash with the Liberty version of EclipseLink.</p>
  <p>If I deploy the code as a WAR file, and add a classloader of &quot;PARENT_LAST&quot;, the code works fine.</p>
  <p>However, if I try to deploy the code in an EAR file, and set a classloader of &quot;PARENT_LAST&quot; for the ear file, I get this error;</p>
  <pre><code>[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 &quot;org.eclipse.persistence.jpa.PersistenceProvider.getProviderUtil()Ljavax/persistence/spi/ProviderUtil;&quot; 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
  </code></pre>
  <p>Does anyone know whether I can replace the IBM Liberty implementation of EclipseLink with my version 2.7.7 version?
  My application also uses JPA, which is working fine under Liberty, so I don't want to break that.</p>
  <p>Any help / guidance appreciated... it's been a very long saturday.</p>
  <p>PS:
  I tried running the java code using only the SDO library (commonj.sdo_2.1.1v20111051852.jar), and relying on the WebSphere Liberty runtime jars to provide Eclipselink functionality, and I got the following errors, which is why I then moved to adding the &quot;matching pair&quot; of Eclipselink / SDO jars mentioned above;</p>
  <pre><code>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.&lt;init&gt;(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)
  </code></pre>