[SPRING] 테스트 스위트를 실행하는 동안 예외가 발생하는 Ehcache 종료
SPRING테스트 스위트를 실행하는 동안 예외가 발생하는 Ehcache 종료
다음과 같은 문제가 발생합니다.
내 프로젝트에 테스트 스위트가 있고 각각의 개별 테스트가 정상적으로 실행됩니다.
그러나 스위트 룸으로 실행할 때 다음 중 일부가 실패하여 일부가 실패합니다.
Caused by: java.lang.IllegalStateException: The dao Cache is not alive (STATUS_SHUTDOWN)
at net.sf.ehcache.Cache$CacheStatus.checkAlive(Cache.java:4269)
at net.sf.ehcache.Cache.checkStatus(Cache.java:2703)
at net.sf.ehcache.Cache.get(Cache.java:1576)
at org.springframework.cache.ehcache.EhCacheCache.get(EhCacheCache.java:61)
at org.springframework.cache.interceptor.CacheAspectSupport.inspectCacheables(CacheAspectSupport.java:310)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:198)
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:66)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
이 동작을 피할 수있는 방법이 있습니까? 즉 여러 테스트에서 캐시를 유지하거나 올바르게 종료하는 방법이 있습니까?
해결법
-
==============================
1.테스트 컨텍스트에서 EhCacheManagerFactoryBean 또는 EhCacheCacheManager에서 공유 속성을 false로 설정하십시오.
테스트 컨텍스트에서 EhCacheManagerFactoryBean 또는 EhCacheCacheManager에서 공유 속성을 false로 설정하십시오.
-
==============================
2.테스트 용으로 별도의 캐시 구성을 만드십시오! 범위 "프로토 타입"
테스트 용으로 별도의 캐시 구성을 만드십시오! 범위 "프로토 타입"
@Configuration @EnableCaching public class EhCacheConfig { @Bean(name = "cacheManager") @Scope("prototype") public CacheManager getCacheManager() { return new EhCacheCacheManager(getEhCacheFactory().getObject()); } @Bean @Scope("prototype") public EhCacheManagerFactoryBean getEhCacheFactory() { EhCacheManagerFactoryBean factoryBean = new EhCacheManagerFactoryBean(); factoryBean.setConfigLocation(new ClassPathResource("ehcache.xml")); factoryBean.setShared(true); return factoryBean; } }
-
==============================
3.이 문제는 기본적으로 캐시가 여러 응용 프로그램간에 공유 될 때 발생합니다. 공유 속성을 false로 설정하여 캐시를 공유하지 않도록하십시오.
이 문제는 기본적으로 캐시가 여러 응용 프로그램간에 공유 될 때 발생합니다. 공유 속성을 false로 설정하여 캐시를 공유하지 않도록하십시오.
<봄 : 속성 이름 = "configLocation"값 = "클래스 경로 : ehcache.xml"/> <봄 : 콩 이름 = "ehcache"클래스 = "org.springframework.cache.ehcache.EhCacheManagerFactoryBean" shared "value ="false "/> spring : bean>
그러나 실행에 당신은 만날 것이다
'cacheManager'라는 이름을 가진 다른 CacheManager가 이미 동일한 VM에 존재합니다. IllegalStateException
이것을 막기 위해 우리는 언급 할 필요가있다.
<스프링 : 속성 이름 = "캐시 관리자 이름"값 = "abc"/>
마침내 문제가 해결되기를 바랍니다.
-
==============================
4.JUnit은 스프링 컨텍스트를 공유합니다. 내 테스트 중 하나에서 Spring 컨텍스트를 명시 적으로 닫을 때이 예외로부터 피한다. junit 테스트 클래스 전체에서 Spring 응용 프로그램 컨텍스트 재사용을 참조하십시오.
JUnit은 스프링 컨텍스트를 공유합니다. 내 테스트 중 하나에서 Spring 컨텍스트를 명시 적으로 닫을 때이 예외로부터 피한다. junit 테스트 클래스 전체에서 Spring 응용 프로그램 컨텍스트 재사용을 참조하십시오.
from https://stackoverflow.com/questions/16281802/ehcache-shutdown-causing-an-exception-while-running-test-suite by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring security3 "spring-security-2.0.xsd 스키마를 사용할 수 없습니다" (0) | 2019.03.25 |
---|---|
[SPRING] Spring을 통해 Bean에 Google guava 캐시 빌더 주입 (0) | 2019.03.25 |
[SPRING] Typesafe Config로 지원되는 Spring 환경 (0) | 2019.03.25 |
[SPRING] 필자는 FasterXML \ Jackson에서 부울 값을 Int로 serialize / De-serialize 할 수 있습니까? (0) | 2019.03.25 |
[SPRING] Spring : get 메소드 호출마다 Bean의 새로운 인스턴스를 생성한다. (0) | 2019.03.25 |