如何在persistence.xml中设置默认的Eclipselink CacheCoordinateType?

时间:2018-09-10 23:01:39

标签: java hibernate jpa eclipselink

如果您查看此页面: http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_cache.htm

它表示以下内容:

  

(可选)将此属性设置为高速缓存协调模式(org.eclipse.persistence.annotations.CacheCoordinationType枚举类型)。您还必须在持久性单元属性中配置缓存协调。请参阅“缓存”。

由于引用的文档未提供示例,因此我无法确定要设置的属性。我试过了,但是有一个例外:

<property name="eclipselink.cache.type.coordinationType" value="INVALIDATE_CHANGED_OBJECTS" />

Sep 10 22:57:15 apps-3 run.sh[24742]:  java.lang.IllegalArgumentException: Property eclipselink.cache.type.coordinationType has an illegal value INVALIDATE_CHANGED_OBJECTS.
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.eclipse.persistence.internal.sessions.PropertiesHandler$Prop.getValueToApply(PropertiesHandler.java:366)
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.eclipse.persistence.internal.sessions.PropertiesHandler$Prop.getPrefixValuesToApply(PropertiesHandler.java:322)
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.eclipse.persistence.internal.sessions.PropertiesHandler.getPrefixValuesLogDebug(PropertiesHandler.java:155)
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateDescriptorCacheSettings(EntityManagerSetupImpl.java:1424)
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateSession(EntityManagerSetupImpl.java:2729)
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:713)
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:207)
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:307)
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337)
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:318)
Sep 10 22:57:15 apps-3 run.sh[24742]: #011at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createEntityManager(ReloadableEntityManagerFactory.java:208)

有人知道该怎么做吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我想为其他任何人添加答案:

我们添加了以下PU属性,并且缓存效果很好!我们在Apache TomEE上运行,因此如果您在其他应用服务器上,则下面的openejb:Resource/jms/connectionFactory值将有所不同

        <property
            name="eclipselink.cache.coordination.protocol"
            value="jms" />
        <property
            name="eclipselink.cache.coordination.jms.topic"
            value="openejb:Resource/com.xxx.applications.eclipselink.cache" />
        <property
            name="eclipselink.cache.coordination.jms.factory"
            value="openejb:Resource/jms/connectionFactory" />
        <property
            name="eclipselink.cache.coordination.jms.reuse-topic-publisher"
            value="true" />
        <property
            name="eclipselink.cache.coordination.remove-connection-on-error"
            value="true" />
        <property
            name="eclipselink.session.name"
            value="com.xxx.xxx-jpa-model" />