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