2012-11-07 4 views
6

Wir stehen vor einem Problem über EhCache und Spring, wenn wir zeigen XSD-Datei in ehcache.xml bis http://ehcache.org/ehcache.xsd, alles ist in Ordnung, unsere Anwendung kann Start richtig sein. Unser Server kann jedoch nicht auf eine externe Website zugreifen. Deshalb haben wir den Speicherort von XSD wie folgt auf "local" geändert. Die Anwendung kann jedoch nicht mit der folgenden Ausnahme starten (kopieren Sie ehcache.xsd in den Klassenordner, wie ehcache.xml). Ich habe viele Lösungen gegoogelt, aber es kann immer noch nicht behoben werden. Ich brauche deine Hilfe dabei. Vielen Dank.Verwendung von lokalen xsd für EhCache mit Spring

Spring: 3.1.0 ehcache: 2.4.2 Server: 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"> 

Ausnahme:

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

Antwort

1

Mein Behelfslösung ist hinzufügen diese xsd-Datei in absoluten Pfad wie: c: /ehcache.xsd und zeigen Sie auf diese Position in ehcache.xml. Hoffe, das wird jemandem helfen, der das gleiche Problem hat.

Noch auf der Suche nach anderen Lösungen.

Danke.

7

Normalerweise setze ich xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd", aber das kann nicht in einer Offline-Umgebung arbeiten.

9

herunterladen ehcache.xsd, legt es auf die gleichen Ordner, in der Config-XML-Datei ist. den XML-Kopf ändern wie unten, beachten Sie das Classpath prefix:

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

Dies wird in der Entwicklung und Produktionsumgebung arbeiten.

+0

Dies funktioniert sogar ohne 'classpath:' Präfix, wenn im selben Verzeichnis. thnks – msangel