Как установить Eclipselink CacheCoordinateType по умолчанию в файле persistence.xml? - PullRequest
0 голосов
/ 11 сентября 2018

если вы посмотрите на эту страницу: 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 голосов
/ 02 августа 2019

Я решил добавить ответ для всех, кто ищет:

Мы добавили следующие свойства 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" />
...