2010-02-13 4 views
0

Короче, я пытаюсь узнать немного весны. Проблема заключается в том, когда я раскрываю мое приложение, пружинные файлы загружает XML и встречает это исключение:Предотвратите ошибку 503 от W3.org, когда Spring пытается загрузить файлы XML

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: 
Line 8 in XML document from ServletContext resource [/WEB-INF/spring-servlet.xml] is invalid; 
nested exception is oracle.xml.parser.schema.XSDException: 
Server returned HTTP response code: 503 for URL: 
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:404) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) 
.... 

я обнаружил, что это вызвано W3, который возвращает 503 для повторяющихся запросов для загрузки их DTD файлов (см here подробности). Есть ли способ заставить Spring использовать кешированную версию? Кроме того, как я могу это сделать? Моя среда включает Glassfish v3, Spring v2.5.6, Spring Web Flow v2.0.8 и NetBeans 6.8

Вещь, DTD не упоминается в файле. Вот что мой spring-servlet.xml выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:webflow="http://www.springframework.org/schema/webflow-config" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/webflow-config 
    http://www.springframework.org/schema/webflow-config/spring-webflow-config.xsd"> 
.... 
</beans> 

Приветствиях

ответ

2

Ваш весенний XML-файл не должен быть XHTML, так что просто удалить объявление DTD. Вместо использования XML-схемы, как показано в примере на

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-metadata

+0

Да, вещь DTD там не упоминается – Sevas

+0

Косвенно, это так. Просто добавьте -1.0, чтобы прочитать его http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd. Файл схемы, на который вы ссылаетесь, является документом XHTML. – andi5

0

Сервер W3 был, вероятно, вниз ... но это не круто для приложения, чтобы перестать работать он не может говорить с w3.org, и не приветствуется w3.org для приложения для обновления стандартных DTD и т. д. каждый раз, когда он запускается.

Ваше приложение должно иметь свой собственный постоянный запас стандартных DTD etetera и должно быть сконфигурировано так, чтобы XML-парсеры и тому подобное знали, что посмотреть там в первую очередь. В качестве альтернативы вам следует установить, что у вашего прокси-сервера есть постоянные копии соответствующих DTD.

В любом случае, поскольку @ andi5 говорит, что файл подключения Spring не должен использовать этот DTD в любом случае. Поэтому удаление ссылки должно исправить этот конкретный экземпляр проблемы.