Hibernate 5.3 Spring 5, Ehcache 3.5.2, jdk 10, Hibernate говорит: «Поставщик кэша не запущен» - PullRequest
0 голосов
/ 24 мая 2018

... мой вопрос, с этой конфигурацией, мне нужно "запустить" ehcache?если да, то как?это лабиринт работает, хотя зависимости libs, например, нуждаются в hibernate-ehcache и ehcache?нужен hibernate-jcache?Вот последняя ошибка стандартного тома 9 после трех дней отладки:

       ... 93 common frames omitted
aused by: java.lang.IllegalStateException: Cache provider not started
       at org.hibernate.cache.spi.AbstractRegionFactory.verifyStarted(AbstractRegionFactory.java:42)
       at org.hibernate.cache.spi.support.RegionFactoryTemplate.buildTimestampsRegion(RegionFactoryTemplate.java:66)
       at org.hibernate.cache.internal.EnabledCaching.<init>(EnabledCaching.java:80)
       at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:33)
       at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:24)
       at org.hibernate.service.spi.SessionFactoryServiceInitiator.initiateService(SessionFactoryServiceInitiator.java:
0)
       at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistr
Impl.java:68)
       at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263

ключевые конфигурационные файлы:

ivy.xml (отрывок):

<dependency org="org.hibernate" name="hibernate-core" rev="5.3.0.Final">
</dependency>

<dependency org="org.hibernate" name="hibernate-jcache" rev="5.3.0.Final" />

<dependency org="org.hibernate" name="hibernate-ehcache"
    rev="5.3.0.Final" />


<dependency org="org.springframework.boot" name="spring-boot-starter-cache"
    rev="2.0.2.RELEASE" />


<dependency org="org.ehcache" name="ehcache" rev="3.5.2" />

<dependency org="org.springframework" name="spring-orm" rev="5.0.6.RELEASE" />
<dependency org="org.springframework" name="spring-core"
    rev="5.0.6.RELEASE" />

Spring hibernateContext.xml (отрывок)

<property name="hibernateProperties">
        <props>
            <prop key="hibernate.c3p0.acquire_increment">5</prop>
            <prop key="hibernate.c3p0.idle_test_period">100</prop>
            <prop key="hibernate.c3p0.max_size">20</prop>
            <prop key="hibernate.c3p0.max_statements">50</prop>
            <prop key="hibernate.c3p0.min_size">5</prop>
            <prop key="hibernate.c3p0.timeout">300</prop>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">false</prop>
            <prop key="hibernate.format_sql">false</prop>
            <prop key="hibernate.use_sql_comments">false</prop>

            <!-- <prop key="hibernate.enable_lazy_load_no_trans">true</prop> -->

            <!-- ehcache settings -->

            <prop key="hibernate.cache.use_query_cache">true</prop>
            <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.jcache.JCacheRegionFactory</prop>
            <prop key="hibernate.javax.cache.provider">org.ehcache.jsr107.EhcacheCachingProvider</prop>
            <prop key="hibernate.cache.use_second_level_cache">true</prop>
            <prop key="hibernate.cache.default_cache_concurrency_strategy">read-write</prop>
            <prop key="hibernate.javax.cache.uri">classpath:jcache.xml</prop>

        </props>
    </property>

</bean>

jcache.xml (все из них)

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ehcache.org/v3" xmlns:jsr107="http://www.ehcache.org/v3/jsr107"
xsi:schemaLocation="
        http://www.ehcache.org/v3
        http://www.ehcache.org/schema/ehcache-core.xsd
        http://www.ehcache.org/v3/jsr107
        http://www.ehcache.org/schema/ehcache-107-ext.xsd">

<!-- https://hibernate.atlassian.net/browse/HHH-12531 -->
<service>
    <jsr107:defaults enable-management="true" enable-statistics="true" default-template="default" />
</service>

<cache alias="org.hibernate.cache.spi.QueryResultsRegion">
    <expiry>
        <tti unit="seconds">300</tti>
    </expiry>
    <heap>1024</heap>
</cache>

<cache alias="org.hibernate.cache.spi.TimestampsRegion">
    <expiry>
        <none />
    </expiry>
    <heap>4096</heap>
</cache>

<cache-template name="default">
    <expiry>
        <tti unit="seconds">300</tti>
    </expiry>
    <heap>1024</heap>
</cache-template>

возникла проблема гибернациитоже https://hibernate.atlassian.net/browse/HHH-12635

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Анри был прав, что мне не нужен hibernate-ehcache.Но переименование jcache.xml в ehcache.xml не требовалось.

Короче, исправление моей ошибки заключалось в добавлении ресурса jcache.xml в мою сборку ant, поскольку он не развертывался.С учетом вышесказанного, для тех, у кого может быть эта ошибка, существует такой лабиринт возможностей и отсутствие понятной простой-тупой конфигурации для hibernate 5.3, spring 5, ehcache 3.5.2, jdk 10, tomcat 9, ваша единственная надежда (другоечем тупая удача, которая работает) - перевести tomcat в режим отладки, присоединить затмение, добавить исходный код hibernate-ядра в проект eclipse, установить точку останова в вызывающем класс / методе hibernate и посмотреть, что недоступно / ожидается в вашемКонкретная конфигурация.

Также для других, пытающихся заставить это работать, странно, мне действительно нужен spring-boot-starter-cache, без него ни один из моих весенних настроек гибернации не читается.Я парень с 2.5 лет 13 лет, так что я еще не понял, что такое весенний ботинок.предполагается, что это «самоуверенный взгляд на платформу Spring и сторонние библиотеки, чтобы вы могли начать работу с минимальными усилиями».но это также кажется, что это исполняемый / встроенный кот, так что я уверен, что иногда он бывает весьма полезен, совершенно неопределенен и запутывает других ...

0 голосов
/ 25 мая 2018

Я не уверен, что создание проблемы в Hibernate было хорошей идеей.Скорее всего, это проблема конфигурации на вашей стороне.

Первое, что я могу сказать, это то, что hibernate-ehcache там не должно быть.Это используется для Ehcache 2. Не JCache + Ehcache3.

Тогда, пожалуйста, попробуйте переименовать jcache.xml в ehcache.xml?

Наконец, нет, вам не нужноначать при условии.Это должно начаться само собой.

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