Не можете удалить Hibernate кеш второго уровня? - PullRequest
0 голосов
/ 06 ноября 2019

У нас есть веб-приложение, написанное на Java, работающее на GlassFish, которое использует EhCache в качестве механизма кэширования второго уровня. Мы определили, что трафик не гарантирует кэш-память второго уровня, и решили удалить его. Однако, очевидно, это не так просто, как первоначально предполагалось.

Я изменяю файл persistence.xml, чтобы включить ... <property name="hibernate.cache.use_second_level_cache" value="false"/>, и удалил ehcache из нашего Maven POM.

Он читается иинициализируется через ... EntityManagerFactory emf = Persistence.createEntityManagerFactory("devDB");.

Full persistence.xml ...

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="devDB" transaction-type="JTA">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <jta-data-source>jdbc/nepedia</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <shared-cache-mode>ALL</shared-cache-mode>
        <properties>
            <property name="hibernate.ejb.entitymanager_factory_name" value="devDB"/>
            <property name="hibernate.connection.release_mode" value="auto" />
            <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform"/>
            <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.SunONETransactionManagerLookup"/>
            <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory"/>
            <property name="hibernate.current_session_context_class" value="jta"/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.format_sql" value="false" />
            <property name="hibernate.use_sql_comments" value="false" />
            <property name="hibernate.cache.use_second_level_cache" value="false"/>
            <property name="hibernate.cache.use_query_cache" value="true"/>
            <property name="hibernate.cache.generate_statistics" value="true"/>
            <property name="hibernate.cache.use_structured_queries" value="false"/>
            <property name="hibernate.cache.use_minimal_puts" value="false"/>
            <property name="hibernate.max_fetch_depth" value="3"/>
        </properties>
    </persistence-unit>
</persistence>

Когда я развертываю приложение в Glassfish, оно жалуется ... Caused by: org.hibernate.cache.NoCacheRegionFactoryAvailableException: Second-level cache is used in the application, but property hibernate.cache.region.factory_class is not given; please either disable second level cache or set correct region factory using the hibernate.cache.region.factory_class setting and make sure the second level cache provider (hibernate-infinispan, e.g.) is available on the classpath.

Есть ли другое место, где это можно установить?

...