2017-11-11 5 views
0

Ich habe vor kurzem auf Spring Boot 1.5.7 von 1.4 aktualisiert und festgestellt, dass Ehcache von 2.x auf 3.x aktualisiert wurde. Die Konfigurationen haben sich alle geändert. Jetzt kann ich die Caching-Konfiguration nicht mehr einrichten.Fehler beim Einrichten von Ehcahe 3 mit Spring Boot 1.5

Ich versuchte, die Schritte auf dem offiziellen blog bei Ehcache, aber keinen Erfolg.

Hier ist meine ehcache-dev.xml

<config 
     xmlns='http://www.ehcache.org/v3' 
     xmlns:jcache='http://www.ehcache.org/v3/jsr107'> 

    <service> 
     <jcache:defaults> 

      <jcache:cache name="categoryCache" template="catalog-cache"/> 
      <jcache:cache name="cfCategoryCache" template="catalog-cache"/> 

      <jcache:cache name="ebooks" template="other-cache"/> 
      <jcache:cache name="userNameToken" template="other-cache"/> 

     </jcache:defaults> 
    </service> 

    <cache-template name="catalog-cache"> 
     <heap unit="entries">200</heap> 
     <expiry> 
      <ttl unit="minutes">10</ttl> 
     </expiry> 
    </cache-template> 

    <cache-template name="other-cache"> 
     <!--<listeners>--> 
     <!--<listener>--> 
     <!--<class>org.terracotta.ehcache.EventLogger</class>--> 
     <!--<event-firing-mode>ASYNCHRONOUS</event-firing-mode>--> 
     <!--<event-ordering-mode>UNORDERED</event-ordering-mode>--> 
     <!--<events-to-fire-on>CREATED</events-to-fire-on>--> 
     <!--<events-to-fire-on>UPDATED</events-to-fire-on>--> 
     <!--<events-to-fire-on>EXPIRED</events-to-fire-on>--> 
     <!--<events-to-fire-on>REMOVED</events-to-fire-on>--> 
     <!--<events-to-fire-on>EVICTED</events-to-fire-on>--> 
     <!--</listener>--> 
     <!--</listeners>--> 
     <heap unit="entries">1000</heap> 
     <expiry> 
      <ttl unit="minutes">15</ttl> 
     </expiry> 
    </cache-template> 
</config> 

Meine application-dev.properties Datei, die die Zeile enthält:

spring.cache.jcache.config=classpath:ehcache-dev.xml

Während des Laufens auf dev Profil, Er erzeugt den Fehler:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.cache.CacheManager]: Factory method 'jCacheCacheManager' threw exception; nested exception is javax.cache.CacheException: org.ehcache.xml.exceptions.XmlConfigurationException: Error parsing XML configuration at file:/**********/target/********/WEB-INF/classes/ehcache-dev.xml 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) 
    ... 135 more 
Caused by: javax.cache.CacheException: org.ehcache.xml.exceptions.XmlConfigurationException: Error parsing XML configuration at file:/**********/target/********/WEB-INF/classes/ehcache-dev.xml 
    at org.ehcache.jsr107.EhcacheCachingProvider$ConfigSupplier.getConfiguration(EhcacheCachingProvider.java:327) 
    at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:128) 
    at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:79) 
    at org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration.createCacheManager(JCacheCacheConfiguration.java:115) 
    at org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration.jCacheCacheManager(JCacheCacheConfiguration.java:97) 
    at org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration$$EnhancerBySpringCGLIB$$46f8ca07.CGLIB$jCacheCacheManager$1(<generated>) 
    at org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration$$EnhancerBySpringCGLIB$$46f8ca07$$FastClassBySpringCGLIB$$fee1b5ae.invoke(<generated>) 
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) 
    at org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration$$EnhancerBySpringCGLIB$$46f8ca07.jCacheCacheManager(<generated>) 
    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:498) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) 
    ... 136 more 
Caused by: org.ehcache.xml.exceptions.XmlConfigurationException: Error parsing XML configuration at file:/**********/target/********/WEB-INF/classes/ehcache-dev.xml 
    at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:167) 
    at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:131) 
    at org.ehcache.jsr107.EhcacheCachingProvider$ConfigSupplier.getConfiguration(EhcacheCachingProvider.java:324) 
    ... 150 more 
Caused by: org.xml.sax.SAXParseException; systemId: file:/**********/target/********/WEB-INF/classes/ehcache-dev.xml; lineNumber: 20; columnNumber: 17; cvc-complex-type.2.4.a: Invalid content was found starting with element 'expiry'. One of '{"http://www.ehcache.org/v3":heap-store-settings, "http://www.ehcache.org/v3":disk-store-settings, "http://www.ehcache.org/v3":service-configuration}' is expected. 
    at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) 
    at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) 
    at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) 
    at org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source) 
    at org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source) 
    at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source) 
    at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source) 
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) 
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) 
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177) 
    at org.ehcache.xml.ConfigurationParser.<init>(ConfigurationParser.java:165) 
    at org.ehcache.xml.XmlConfiguration.parseConfiguration(XmlConfiguration.java:175) 
    at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:163) 
    ... 152 more 

Nun, wenn ich nicht falsch liege, hat es ein Problem mit der Annahme expiry Element innerhalb der cache-template Element. Aber das sollte nicht der Fall sein, da es here klar erwähnt wird, dass A <cache-template> element may contain all the same child elements as a <cache> element. und cache Element ein expiry Element hat.

Ich kann nicht verstehen, was ich hier vermisse. Jede Hilfe wird geschätzt. TIA

Antwort

1

Offenbar ist das Problem in der Reihenfolge der Elemente. Das Element heap muss hinter dem Element expiry stehen.

Die folgende Konfiguration funktioniert gut:

<cache-template name="catalog-cache">   
    <expiry> 
     <ttl unit="minutes">10</ttl> 
    </expiry> 
    <heap unit="entries">200</heap> 
</cache-template> 

Das macht keinen Sinn als Auftrag sollte keine Rolle spielen. Haben Sie eine bug-report mit EhCache

abgelegt
Verwandte Themen