2012-11-07 13 views
6

Mamy do czynienia z jednym problemem dotyczącym EhCache i Spring, kiedy wskażemy plik XSD w pliku ehcache.xml do http://ehcache.org/ehcache.xsd, wszystko jest w porządku, nasza aplikacja może poprawnie się uruchomić. Ale nasz serwer nie może uzyskać dostępu do zewnętrznej strony internetowej, więc zmieniliśmy lokalizację XSD na lokalną, jak poniżej, ale aplikacja nie może uruchomić się z następującym wyjątkiem (już kopiujemy plik ehcache.xsd do folderu klas, tak samo jak ehcache.xml). Mam wiele rozwiązań w Google, ale nadal nie można ich naprawić. Potrzebuję twojej pomocy w tej sprawie. Dziękuję Ci bardzo.Jak używać lokalnego xsd dla EhCache ze sprężyną

Wiosna: 3.1.0 ehcache: 2.4.2 Serwer: Tomcat 6.0 Java: 1.6

Config:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="ehcache.xsd" 
    updateCheck="false" monitoring="autodetect" dynamicConfig="true"> 

Wyjątek:

2012-11-07 16:54:42,003 WARN [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - <Ignored XML validation warning> 
org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'ehcache.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.warning(ErrorHandlerWrapper.java:96) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:380) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.findSchemaGrammar(XMLSchemaValidator.java:2440) 
    ... more 
2012-11-07 16:54:42,007 ERROR [org.springframework.web.context.ContextLoader] - <Context initialization failed> 
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 3 in XML document from ServletContext resource [/WEB-INF/classes/META-INF/ehcache.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'ehcache'. 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) 
    ... more 
Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'ehcache'. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131) 

    ... more 
+0

http://www.ehcache.org/ehcache.xsd – OhadR

Odpowiedz

1

Moja Obejście to dodać ten plik xsd do ścieżki bezwzględnej, na przykład: c: /ehcache.xsd i wskaż tę lokalizację w pliku ehcache.xml. Mam nadzieję, że to pomoże komuś, kto stoi w obliczu tego samego problemu.

Nadal nie możemy się doczekać, aby znaleźć inne rozwiązanie.

Dzięki.

7

Zazwyczaj ustawiam xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd", ale to nie może działać w środowisku offline.

9

Pobierz ehcache.xsd, umieść go w tym samym folderze, gdzie znajduje się plik konfiguracyjny xml. zmodyfikować głowicę xml jak poniżej, zauważysz ścieżce klasy prefix:

<ehcache 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="classpath:ehcache.xsd"> 

to będzie działać w środowisku rozwoju i produkcji.

+0

to działa nawet bez prefiksu 'classpath:', jeśli znajduje się w tym samym katalogu. thnks – msangel

Powiązane problemy