TOMCAT_HOME/lib/ext에 공유 된 Tomcat 및 서비스 jar에 여러 웹 응용 프로그램이 배포되었습니다. 모든 응용 프로그램은 Spring을 사용하고 있고, 서비스 jar에서는 Spring 3.1 Caching annotation으로 주석 처리 된 bean을 가지고 있습니다. Ehcache 공급자를 사용하고 있습니다. 그리고 모든 웹 애플리케이션에서 하나의 CacheManager를 사용하고 싶습니다. 웹 애플리케이션 레벨에서 스프링 캐시 설정을 정의하면 캐싱은 작동하지만 모든 앱/컨텍스트에 대해 별도의 cacheManager가 작성됩니다. 'Shared'캐쉬 관리 프로그램은 문제가 발생합니다. 왜냐하면 그러한 애플리케이션 중 하나가 전개 취소되면이 공유 cacheManager가 종료되기 때문입니다. 따라서 단일 CacheManager를 내 서비스 jar에서 구성하고 웹 응용 프로그램의 Bean으로 작성된 메소드에 대한 모든 호출에 사용합니다.Spring 캐싱을 사용하여 여러 웹 응용 프로그램에 대한 단일 CacheManager 구성
<context:annotation-config/>
<context:component-scan base-package="com.mycompany.app" />
<context:component-scan base-package="com.mycompany.portal.service" />
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cacheManager-ref="ehCacheManager"/>
<bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:configLocation="ehcache.xml" ></bean>
<cache:annotation-driven cache-manager="cacheManager"/>
내가 정의한 부모 애플리케이션 컨텍스트를 beanRefContext.xml로를 통해 : 나의 현재의 시도는 service.jar의 applicationContext.xml에서 다음 confuguration을 정의하는 것입니다
<bean id="service.parent.context" class="org.springframework.context.support.ClassPathXmlApplicationContext">
<constructor-arg>
<list>
<value>applicationContext.xml</value>
</list>
</constructor-arg>
</bean>
을 그리고 나는 이것을 사용하고 웹 응용 프로그램의 web.xml에서 contextParam을 사용하여 모든 웹 응용 프로그램의 상위 컨텍스트로 컨텍스트를 설정합니다.
결과는이 parentContext가로드되지만 캐싱이 전혀 작동하지 않습니다. 어떻게 해결할 수 있습니까? service.jar에서 parentContext를 정의하는 올바른 방법이 있습니까?