Eclipselink кэш второго уровня для запросов, но не распределенный / общий кэш - PullRequest
0 голосов
/ 07 июня 2019

Распределенный кеш Eclipselink устанавливает блокировку. Проблема хорошо известна: https://www.eclipse.org/forums/index.php/t/1097290/.

Следующая строка кода блокирует мои потоки через некоторое время. (Фрагмент кода ниже написан в зависимости Eclipselink)

public class ConcurrencyManager implements Serializable {
 /**
  * Release the deferred lock.
  * This uses a deadlock detection and resolution algorithm to avoid cache deadlocks.
  * The deferred lock manager keeps track of the lock for a thread, so that other
  * thread know when a deadlock has occurred and can resolve it.
  */
public void releaseDeferredLock() throws ConcurrencyException {
...
while(true)
...
}
}

Я хотел бы иметь локальный (нераспределенный) кэш второго уровня, предназначенный только для чтения, для некоторых таблиц, содержащих переводы, которые никогда не меняются.

Я попытался изменить persistence.xml со следующими атрибутами:

   <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
   <validation-mode>CALLBACK</validation-mode>
   <properties>           
     <property name="eclipselink.cache.shared.default" value="true"/>
     <property name="javax.persistence.sharedCache.mode" value="ENABLE_SELECTIVE"/>
     <property name="eclipselink.weaving" value="static" />

Я бы хотел иметь кеш запросов второго уровня, но не для общего доступа. Если я отключаю этот кеш, я также отключаю локально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...