EHCache構成+ Spring Boot:NoCacheRegionFactoryAvailableException

etingertal

EHCacheに基づく第2レベルのキャッシュを使用してSpringBootアプリケーションを構成しようとしています。この例外が発生します:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method     failed; nested exception is 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.
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1554)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:975)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:752)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:109)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:952)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:941)
    at com.yes.wizard.Application.main(Application.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
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.
    at org.hibernate.cache.internal.NoCachingRegionFactory.buildEntityRegion(NoCachingRegionFactory.java:83)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:364)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1859)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845)
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844)
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:152)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:338)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1613)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1550)
    ... 20 more    

これは私の構成です:

Application.class:

@EnableAutoConfiguration
@Configuration
@ComponentScan
@ImportResource(value = "/ws.xml")
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

CacheConfig.class:

@Configuration
@EnableCaching
public class CachingConfig implements CachingConfigurer {

    @Bean
    @Override
    public CacheManager cacheManager() {
        EhCacheCacheManager cacheManager = new EhCacheCacheManager();
        cacheManager.setCacheManager(ehCacheManagerFactoryBean().getObject());
        return cacheManager;
    }

    @Bean
    @Override
    public KeyGenerator keyGenerator() {
        return new SimpleKeyGenerator();
    }

    @Bean
    public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
        EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
        ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
        ehCacheManagerFactoryBean.setCacheManagerName("messageCache");
        ehCacheManagerFactoryBean.setShared(true);
        return ehCacheManagerFactoryBean;
    }
}

MyEntity:

@Entity
@XmlRootElement
@Table(name = "my_entity")
@Cacheable(value = true)
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)
public class MyEntity { ... }

ehcache.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
    <defaultCache eternal="true" maxElementsInMemory="100" overflowToDisk="false" />
    <cache name="messageCache" maxElementsInMemory="10" eternal="true" overflowToDisk="false" />
</ehcache>

これは何が原因ですか?

アンディウィルキンソン

エラーメッセージの重要な部分は次のとおりです。

アプリケーションでは第2レベルのキャッシュが使用されますが、プロパティhibernate.cache.region.factory_classは指定されていません。第2レベルのキャッシュを無効にするか、hibernate.cache.region.factory_class設定を使用して正しいリージョンファクトリを設定し、第2レベルのキャッシュプロバイダー(hibernate-infinispanなど)がクラスパスで使用可能であることを確認してください

このfactory_classプロパティは、SpringBootのapplication.propertiesファイル設定できます。例えば:

spring.jpa.properties.hibernate.cache.region.factory_class: org.hibernate.cache.ehcache.EhCacheRegionFactory

使用する必要のあるクラス名は、EhCacheの依存関係によって異なります。この場合、私はを使用しましたhibernate-ehcache

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring Boot Elasticsearch構成

分類Dev

Spring Boot + Spring OAuthJava構成

分類Dev

Spring Boot + Spring OAuthJava構成

分類Dev

Maven構成のSpring-Boot

分類Dev

Spring3.1.1およびHibernate用のEHCacheの構成

分類Dev

ehcache の Spring 実装で JMX を構成しますか?

分類Dev

MemcachedでSpring Bootを構成する方法

分類Dev

Spring Boot JSR-303 / 349構成

分類Dev

Spring Boot:構成できません

分類Dev

RestController Spring Bootの自動構成

分類Dev

Spring Boot rabbitmq接続再試行構成

分類Dev

Spring BootでのUndertow RequestEncodingHandlerの構成

分類Dev

FreeMarker構成の競合(Spring Boot)

分類Dev

Spring Boot + GWT組み込み構成

分類Dev

Spring Boot2でのJedisの構成

分類Dev

Ehcache CacheManager(v 3.x)をXML構成なしでSpring CacheManagerに変換する

分類Dev

Spring Bootで動的構成パスを構築する

分類Dev

Spring SecurityLDAP構成

分類Dev

Spring MVCJava構成

分類Dev

Spring BootCORS構成

分類Dev

SPAフロントエンドのSpring Bootを構成する

分類Dev

Spring Boot + Gradle-環境構成をどこに置くか?

分類Dev

jOOQおよびSpring Boot pom.xml構成の問題

分類Dev

JTDSを使用してSpring BootでHikariCPを構成する

分類Dev

最新のSpring Boot用にWebMvcConfigurerAdapterを構成する

分類Dev

Spring Boot:CommonMultipartResolverのmaxUploadSizeを構成するときにClassNotFoundException

分類Dev

Spring-bootによるセキュリティ構成

分類Dev

Spring Bootでプログラム的にDataSourceを構成する

分類Dev

Spring-Bootアプリケーションの外部構成

Related 関連記事

ホットタグ

アーカイブ