복붙노트

[SPRING] 다른 익명의 CacheManager는 이미 동일한 VM에 존재합니다 (ehCache 2.5).

SPRING

다른 익명의 CacheManager는 이미 동일한 VM에 존재합니다 (ehCache 2.5).

이것은 junit 테스트를 실행하면 어떻게됩니까?

Another CacheManager with same name 'cacheManager' already exists in the same VM. Please 
provide unique names for each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same
   CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.

The source of the existing CacheManager is: 
 DefaultConfigurationSource [ ehcache.xml or ehcache-failsafe.xml ]

예외 뒤에 이유는 무엇입니까. 동시에 실행되는 cacheManager가 두 개 이상있을 수 있습니까?

이것이 Sping 3.1.1을 사용하여 cachManager를 구성한 방법입니다. 명시 적으로 cacheManager의 범위를 "singleton"으로 설정합니다.

<ehcache:annotation-driven />

<bean
    id="cacheManager"
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
    scope="singleton"
    />

ehcache.xml은 다음과 같습니다.

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
     updateCheck="false"
     maxBytesLocalHeap="100M" 
     name="cacheManager"
     >
 ....
 </ehcache>

마침내 수업

@Component
public class BookingCache implements CacheWrapper<String, BookingUIBean> {

     @Autowired
     private CacheManager ehCacheManager;
      ....
}

나는 내 코드 기반에서 오직 하나의 cacheManager 만 다루고 있다고 확신한다. 뭔가 다른 n 번째 인스턴스가 실행 중일 수 있습니다.

해결법

  1. ==============================

    1.EhCacheManagerFactoryBean은 싱글 톤일 수도 있지만, 여러 개의 CacheManagers를 만들고 동일한 이름을 지정하려고합니다. 이는 Ehcache 2.5 의미를 위반합니다.

    EhCacheManagerFactoryBean은 싱글 톤일 수도 있지만, 여러 개의 CacheManagers를 만들고 동일한 이름을 지정하려고합니다. 이는 Ehcache 2.5 의미를 위반합니다.

    공유 bean을 true로 설정하여 JVM에서 CacheManager의 공유 인스턴스를 작성하도록 factory bean에 지시하십시오.

    <bean id="cacheManager"
          class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
          p:shared="true"/>
    
  2. ==============================

    2.나는 JPA (2.0) + Hibernate (3.6.4) + Spring (3.2.4)을 사용한 나의 통합 테스트에서 같은 문제를 가지고 있었다. 이 문제는 다음 Hibernate 구성을 사용하여 해결되었습니다.

    나는 JPA (2.0) + Hibernate (3.6.4) + Spring (3.2.4)을 사용한 나의 통합 테스트에서 같은 문제를 가지고 있었다. 이 문제는 다음 Hibernate 구성을 사용하여 해결되었습니다.

    <property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory"/>
    

    사용하는 대신

    <property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/>
    
  3. ==============================

    3.문제는 Spring 테스트 프레임 워크에 내장 된 컨텍스트로드 최적화이다. 테스트 클래스가 완료되면 스프링 (기본값 당)은 문맥을 파괴하지 않는다. 다른 테스트 클래스가 (처음부터 생성하는 대신) 재사용 할 수 있기를 바란다.

    문제는 Spring 테스트 프레임 워크에 내장 된 컨텍스트로드 최적화이다. 테스트 클래스가 완료되면 스프링 (기본값 당)은 문맥을 파괴하지 않는다. 다른 테스트 클래스가 (처음부터 생성하는 대신) 재사용 할 수 있기를 바란다.

    @DirtiesContext를 사용하여이 기본값을 무시할 수 있습니다. 또는 maven을 사용하는 경우 확실한 forkMode를 "always"로 설정하고 테스트 클래스마다 새 VM을 만들 수 있습니다.

  4. ==============================

    4.또한 ehcache.xml 구성 (ehcache 요소에 있음)에 "xxx"라는 이름을 설정할 수도 있습니다.

    또한 ehcache.xml 구성 (ehcache 요소에 있음)에 "xxx"라는 이름을 설정할 수도 있습니다.

    그게 내 응용 프로그램의 모듈 중 하나에 숨어있는 또 다른 캐시 구성을 가지고 있다고 생각해서 저에게는 트릭이었습니다.

    공유 된 솔루션도 작동하지만, 나는 그것의 광범위한 의미를 알지 못합니다.

  5. ==============================

    5.Hibernate 5로 업그레이드 한 후에 나는 다음을 사용해야했다.

    Hibernate 5로 업그레이드 한 후에 나는 다음을 사용해야했다.

    <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory"/>
    

    대신에:

    <property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory"/>
    

    다른 패키지를 사용하지 마십시오.

  6. ==============================

    6.후세에 대한 더 좋은 방법은 EhCacheManagerFactoryBean의 "accept-existing"속성을 사용하는 것이다.

    후세에 대한 더 좋은 방법은 EhCacheManagerFactoryBean의 "accept-existing"속성을 사용하는 것이다.

  7. ==============================

    7.두 번째 레벨 캐시가 아닌 비즈니스 서비스를 테스트하는 경우 스프링 구성 파일에서 두 번째 레벨 구성을 제거하면 테스트가 성공적으로 실행됩니다. 내 두 번째 레벨 구성이 있습니다.

    두 번째 레벨 캐시가 아닌 비즈니스 서비스를 테스트하는 경우 스프링 구성 파일에서 두 번째 레벨 구성을 제거하면 테스트가 성공적으로 실행됩니다. 내 두 번째 레벨 구성이 있습니다.

     <bean id="entityManagerFactory"
            class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="persistenceUnitName" value="defaultPU" />
            <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" />
            <property name="jpaProperties">
                <props>
                    <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                    <prop key="hibernate.show_sql">false</prop>
                    <!-- <prop key="hibernate.hbm2ddl.auto">update</prop> -->
                    <prop key="hibernate.cache.use_second_level_cache">false</prop>
                    <prop key="hibernate.cache.use_query_cache">false</prop>
                </props>
            </property>
        </bean>
    

    두 번째 수준 캐시 구성의 전체 구성으로 변경하면 실제 webapp는 다음과 같이 실행 시간에 사용됩니다.

        <bean id="entityManagerFactory"
                class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
                <property name="dataSource" ref="dataSource" />
                <property name="persistenceUnitName" value="defaultPU" />
                <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" />
                <property name="jpaProperties">
                    <props>
                        <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                        <prop key="hibernate.show_sql">false</prop>
                        <!-- <prop key="hibernate.hbm2ddl.auto">update</prop> -->
                        <prop key="hibernate.cache.use_second_level_cache">true</prop>
                        <prop key="hibernate.cache.use_query_cache">true</prop>
                        <prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop>               
                        <prop key="net.sf.ehcache.configurationResourceName">ehcache/ehcache-hibernate-local.xml</prop>
                    </props>
                </property>
            </bean>
    

    그런 다음 동일한 예외가 발생합니다. "이름없는 CacheManager가 이미 동일한 VM에 존재합니다."

  8. ==============================

    8.제 경우에는 bean으로 정의 된 사용자 정의 캐시 관리자가 있습니다. 또한 사용자 정의 응용 프로그램 컨텍스트는 스프링 junit 러너를 사용하지 않으므로 @DirtiesContext가 작동하지 않습니다.

    제 경우에는 bean으로 정의 된 사용자 정의 캐시 관리자가 있습니다. 또한 사용자 정의 응용 프로그램 컨텍스트는 스프링 junit 러너를 사용하지 않으므로 @DirtiesContext가 작동하지 않습니다.

    속임수는 빈에서 캐시 인스턴스를 검색하고 캐시에서 cacheManager (EHCache에서 인스턴스)를 가져 오는 것입니다. 그 cachemanager에서 removeCache 메소드를 호출하십시오.

    이것을 @After로 주석 된 메소드에 넣으면 각 테스트 후에 캐시가 VM에서 제거됩니다. 이렇게 :

    @After
    public void destroy() {
        MyCustomCacheManager customCacheManager = (MyCustomCacheManager) context.getBean("yourCustomCacheManagerBean");
    
        try {
            net.sf.ehcache.Cache cache = customCacheManager.getCache();
            net.sf.ehcache.CacheManager cacheManager = cache.getCacheManager();
            cacheManager.removeCache("nameOfYourCache");
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    
        context.destroy();
        context = null;
    }
    
  9. ==============================

    9.resources.groovy에 다음을 추가하여 해결했습니다.

    resources.groovy에 다음을 추가하여 해결했습니다.

    콩 = {     ...     aclCacheManager (EhCacheManagerFactoryBean) {         공유 = true     }     ... }

  10. ==============================

    10.Spring Boot 2.0.2로 전환 할 때 나에게 일어났다. 다음을 수행하여이를 해결했습니다.

    Spring Boot 2.0.2로 전환 할 때 나에게 일어났다. 다음을 수행하여이를 해결했습니다.

    application.yml에서 제거하십시오.

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

    pom.xml에서 제거하십시오.

    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
    </dependency>
    

    pom.xml에서만 유지

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
    </dependency>
    
  11. ==============================

    11.장래 독자를 위해, 나의 경우에이 문제의 원인은 나의 pom.xml 파일에서 hibernate-ehcache 라이브러리를 가져왔다. 나에게는 알려지지 않았지만 이미 ehcache 라이브러리가 포함되어있다. net.sf.ehache libray.

    장래 독자를 위해, 나의 경우에이 문제의 원인은 나의 pom.xml 파일에서 hibernate-ehcache 라이브러리를 가져왔다. 나에게는 알려지지 않았지만 이미 ehcache 라이브러리가 포함되어있다. net.sf.ehache libray.

    이것은 독립 실행 형 응용 프로그램 (예 : 명령 줄 유틸리티)로 실행하고 있지만 Tomcat 서버에서 실행 중일 때 원래 게시물의 오류를 일으켰을 때 제대로 작동하는 것처럼 보였습니다.

    내 POM 파일 변경 :

            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-ehcache</artifactId>
                <version>5.0.2.Final</version>
            </dependency>
            <dependency>
                <groupId>net.sf.ehcache</groupId>
                <artifactId>ehcache</artifactId>
                <version>2.7.4</version>
            </dependency>
    

    에:

            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-ehcache</artifactId>
                <version>5.0.2.Final</version>
            </dependency>
            <!-- ehcache dependency removed -->
    

    문제가 해결되었습니다. 누군가가 tomcat 컨테이너에서 실행할 때만 문제가 나타나는 이유를 알고 있다면 관심을 가질 것입니다.

  12. ==============================

    12.glassfish 3.0.1에서는 IniShiroFilter가 서버 초기화 직후에 동시 요청이 시작될 때 두 번 초기화되는 문제를 추적했습니다. 다음은 두 개의 HTTP 요청에 해당하는 두 개의 다른 스레드에서 스택 추적입니다.

    glassfish 3.0.1에서는 IniShiroFilter가 서버 초기화 직후에 동시 요청이 시작될 때 두 번 초기화되는 문제를 추적했습니다. 다음은 두 개의 HTTP 요청에 해당하는 두 개의 다른 스레드에서 스택 추적입니다.

    [#|2012-11-28T08:25:10.630-0800|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=28;_ThreadName=Thread-1;|java.lang.Exception: Stack trace
            at java.lang.Thread.dumpStack(Thread.java:1249)
            at org.apache.shiro.web.servlet.IniShiroFilter.<init>(IniShiroFilter.java:124)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
            at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.createManagedObject(InjectionManagerImpl.java:303)
            at com.sun.enterprise.web.WebContainer.createFilterInstance(WebContainer.java:725)
            at com.sun.enterprise.web.WebModule.createFilterInstance(WebModule.java:1948)
            at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:248)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
            at com.sentilla.filter.DumpFilter.doFilter(DumpFilter.java:152)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
            at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
            at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
            at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:322)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
            at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:239)
            at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
            at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
            at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
            at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
            at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
            at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
            at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
            at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
            at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
            at java.lang.Thread.run(Thread.java:662)
    

    다른 실

    [#|2012-11-28T08:25:15.299-0800|SEVERE|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=29;_ThreadName=Thread-1;|java.lang.Exception: Stack trace
            at java.lang.Thread.dumpStack(Thread.java:1249)
            at org.apache.shiro.web.servlet.IniShiroFilter.<init>(IniShiroFilter.java:124)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
            at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.createManagedObject(InjectionManagerImpl.java:303)
            at com.sun.enterprise.web.WebContainer.createFilterInstance(WebContainer.java:725)
            at com.sun.enterprise.web.WebModule.createFilterInstance(WebModule.java:1948)
            at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:248)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
            at com.sentilla.filter.DumpFilter.doFilter(DumpFilter.java:152)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
            at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
            at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
            at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:322)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
            at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:239)
            at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
            at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
            at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
            at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
            at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
            at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
            at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
            at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
            at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
            at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
            at java.lang.Thread.run(Thread.java:662)
    

    스택 추적을 보면 ApplicationFilterConfig.java : 248이 원인 일 수 있습니다. 또는 glassfish가 잘못된 컨텍스트에서 필터를 초기화하는 중입니다. 비교를 위해 Tomcat은 BootStrap 중에 필터를 초기화합니다.

  13. ==============================

    13.내 경우 문제는 구성 요소 스캔 및 Java 구성입니다.

    내 경우 문제는 구성 요소 스캔 및 Java 구성입니다.

    root-context.xml
    <context:component-scan base-package="org.beansugar">
    
    servlet-context.xml
    <context:component-scan base-package="org.beansugar">
    

    스프링 구성 요소 스캔 작업을 xml 파일에 두 번 수행합니다. SpringConfig.java 안에 빈을 생성 할 때마다 실행됩니다. 중복 캐시 관리자가 작성되었습니다.

    그래서 나는 그것을 아래와 같이 바 꾸었습니다.

    root-context.xml
    <context:component-scan base-package="org.beansugar">
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    
    servlet-context.xml
    <context:component-scan base-package="org.beansugar" use-default-filters="false">
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    
  14. ==============================

    14.이 오류는 잘못된 매핑 파일에서도 발생합니다. 그 메시지는 끔찍한 것이며 그 원인을 밝히지 않습니다.

    이 오류는 잘못된 매핑 파일에서도 발생합니다. 그 메시지는 끔찍한 것이며 그 원인을 밝히지 않습니다.

  15. ==============================

    15.EhCacheManagerFactoryBean # shared를 true로 설정하면 나를 위해 일했습니다.

    EhCacheManagerFactoryBean # shared를 true로 설정하면 나를 위해 일했습니다.

    EhCacheManagerFactoryBean 설정 # acceptExisting to true DID 나를 위해 일하지 마라.

    import org.springframework.cache.ehcache.EhCacheCacheManager;
    import org.springframework.cache.ehcache.EhCacheManagerFactoryBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.io.ClassPathResource;
    
    @Configuration
    public class EhCacheConfiguration {
    
        @Bean
        public EhCacheCacheManager ehCacheCacheManager() {
    
            return new EhCacheCacheManager(ehCacheManagerFactoryBean().getObject());
        }
    
    
        @Bean
        public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
    
            EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean();
    
            cacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
            cacheManagerFactoryBean.setShared(true);
    
            return cacheManagerFactoryBean;
        }
    }
    

    XML없이 Spring 4에서 EhCache 사용하기에서 설명했다.

  16. ==============================

    16.내 경우 구성은 다음과 같습니다 :

    내 경우 구성은 다음과 같습니다 :

    <spring.boot.version>1.5.8.RELEASE</spring.boot.version>
    <spring.boot.yarn.version>2.4.0.RELEASE</spring.boot.yarn.version>
    <spring.version>4.3.7.RELEASE</spring.version>
    
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>3.5.1-Final</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-ehcache</artifactId>
      <version>3.5.1-Final</version>
    </dependency>
    

    EHCache 프로 바이더 클래스를 변경하면 저에게 도움이되었습니다. 캐시 공급자 클래스를 org.hibernate.cache.EhCacheProvider로 사용하고 대신 이것을 다음과 같이 변경했습니다. net.sf.ehcache.hibernate.SingletonEhCacheProvider

  17. from https://stackoverflow.com/questions/10013288/another-unnamed-cachemanager-already-exists-in-the-same-vm-ehcache-2-5 by cc-by-sa and MIT license