2016-09-27 3 views
1

애플리케이션을 Jboss 4.2.2/java 6/Spring 2.5.4에서 Wildfly 9.0.2/java 8/Spring 4.3.2로 업그레이드 중입니다.ehcache : proxy를 spring4로 마이그레이션하십시오.

스프링/Ehcache는 인터페이스와 워크 플로를 많이 변경했으며 내 xml이 더 이상 올바르지 않은 이유에 대한 정보를 찾을 수 없습니다.

나는 문제에 봉착 선언 :

<ehcache:proxy id="itemDaoCacheProxy" refId="itemDao"> 
    <ehcache:caching methodName="getAllItemNo" cacheName="itemTableCache" /> 
</ehcache:proxy> 

오류 메시지 :

컨텍스트 초기화 실패 : org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException : 라인 98 ServletContext 자원 [/WEB-INF/spring-cfg.xml]의 XML 문서가 유효하지 않습니다. 상자의 예외는 org.xml.sax.SAXParseException입니다. lineNumber : 98; columnNumber : 54; cvc-complex-type.2.4.c : 일치하는 와일드 카드가 엄격하지만 'cache : proxy'요소에 대한 선언을 찾을 수 없습니다. 내가 chache 유틸리티 스프링 상황 support.jar을 사용하고

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:cache="http://www.springframework.org/schema/cache" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-4.3.xsd 
     http://www.springframework.org/schema/tx 
     http://www.springframework.org/schema/tx/spring-tx-4.3.xsd 
     http://www.springframework.org/schema/cache 
     http://www.springframework.org/schema/cache/spring-cache.xsd"> 

하지만 문제는 XML 파일과 스키마에 고립 될 것 같다

내 XML 선언은 다음과 같다. "프록시"요소는 이후 버전에서 보이지 않는 것으로 보입니다.

올드 :

https://github.com/zznate/spring-modules-ehcache/blob/master/src/main/java/org/springmodules/cache/config/ehcache/springmodules-ehcache.xsd

새로운 기능 :

http://www.springframework.org/schema/cache/spring-cache.xsd

exacly으로 Ehcache 기능 : 프록시 나는 새로운이 어떻게 마이그레이션 할 수 있습니다 않으며, 표준?

감사합니다.

답변

1

이 게시물은 시스템을 이전하는 데 사용한 방법을 자세히 설명합니다.

<bean id="itemDaoCacheProxyMethodCache" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor"> 
    <property name="advice"> 
     <bean id="methodCacheInterceptor" class="com.myproject.mymodule.MethodCacheInterceptor"> 
      <property name="cache"> 
       <bean id="methodCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> 
        <property name="cacheManager"> 
         <ref bean="ehcache"/> 
        </property> 
        <property name="cacheName"> 
         <value>itemTableCache</value> 
        </property> 
       </bean> 
      </property> 
     </bean> 
    </property> 
    <property name="mappedName" value="getAllItemNo"/> 
</bean> 

<bean id="itemDaoCacheProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> 
    <property name="target" ref="itemDao"/> 
    <property name="interceptorNames"> 
     <list> 
      <value>itemDaoCacheProxyMethodCache</value> 
     </list> 
    </property> 
</bean> 

어떤 코드가하는 일은 내 클래스를 래핑하고 지정된 함수에 대해 캐시 기능을 구현하는 새로운 컨테이너를 생성입니다

http://springtips.blogspot.se/2007/06/caching-methods-result-using-spring-and_23.html

.

즉, 일부는 캐시 된 응답을 확인/업데이트하고 일부는 그렇지 않은 인스턴스가있을 수 있습니다.