为了针对JPA2.1API进行编程,我希望使用eclipseLink,而不是默认的OpenJPA JPA提供程序。如何在WAS 8.5 Liberty配置文件中实现这一点?
我试着不使用jpa-2.0特性,并设置一个被我的webapp引用的共享库,但没有成功。
这是我的server.xml:
<server description="new server">
<!-- Enable features -->
<featureManager>
<feature>jsp-2.2</feature>
<feature>localConnector-1.0</feature>
</featureManager>
<httpEndpoint host="localhost" httpPort="9080" httpsPort="9443"
id="defaultHttpEndpoint" />
<applicationMonitor updateTrigger="mbean" />
<webApplication id="System" location="System.war" name="System">
<classloader commonLibraryRef="mysql" />
<classloader commonLibraryRef="eclipseLink" />
</webApplication>
<library id="mysql" name="mysql-jdbc-driver">
<fileset dir="C:\Users\jacomac\.m2\repository\mysql\mysql-connector-java\5.1.26" includes="*.jar"/>
</library>
<library id="eclipseLink" name="eclipse-jpa-impl">
<fileset dir="C:\Users\jacomac\.m2\repository\org\eclipse\persistence\eclipselink\2.5.2-M1" includes="*.jar"/>
<fileset dir="C:\Users\jacomac\.m2\repository\org\eclipse\persistence\javax.persistence\2.1.0" includes="*.jar"/>
<fileset dir="C:\Users\jacomac\.m2\repository\org\eclipse\persistence\commonj.sdo\2.1.1" includes="*.jar"/>
</library>
</server>这是我得到的错误:
java.lang.NoClassDefFoundError: javax/persistence/Persistence另外:我知道如果我在我的the应用程序中提供eclipseLink库,它就可以工作,但我想将它用作多个the应用程序的共享资源。
发布于 2014-02-18 20:15:04
Liberty 8.5.5.x似乎只支持JPA2.0,即使EclipseLink支持JPA2.1。
要让Liberty在共享库中使用EclipseLink,您需要设置一个"parentLast“类加载器。我的例子使用了一个ear,但是您也可以为war设置一个类加载器。
您应该只包含eclipselink.jar,并让Liberty使用它自己的javax.persistence实现。
server.xml:
<fileset dir="${shared.resource.dir}/EclipseLinkLibs" id="EclipseLinkFileset" includes="eclipselink.jar"/>
<library filesetRef="EclipseLinkFileset" id="EclipseLinkLib"/>
<enterpriseApplication id="myEAR" location="myEAR.ear" name="myEAR">
<classloader delegation="parentLast" commonLibraryRef="EclipseLinkLib"/>
</enterpriseApplication>您还需要在persistence.xml中将EclipseLink设置为提供程序:
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>根据您的EclipseLink版本和JTA的使用情况,您可能还必须考虑此错误并使用建议的解决方法:WebSphereTransactionController does not handle JTA on WebSphere 8.5
发布于 2015-10-23 01:52:51
从JPA 8.5.5.6开始,引入了EE7支持,其中包括JPA2.1支持。使用JPA 2.1特性( JPA -2.1),我们将默认的JPA提供程序更改为Eclipselink 2.6。
OpenJPA仍然可用,并且是默认的JPA提供者,具有JPA2.0特性,该特性本身与其他EE7特性向前兼容,以支持那些不想将其支持JPA2.0的应用程序移出OpenJPA的人,并且不需要利用JPA2.1添加的功能。
请记住,一次只能启用一个EE7特性,因此,将jpa-2.0与EE7特性一起使用需要启用单个特性,而不是使用JPA便利特性。
https://stackoverflow.com/questions/21427879
复制相似问题