Предотвратить ошибку 503 от W3.org, когда Spring пытается загрузить файлы XML - PullRequest
0 голосов
/ 13 февраля 2010

Короче, я пытаюсь немного научиться весне. Проблема в том, что при развертывании приложения 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 (подробности см. здесь ). Есть ли способ заставить 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 ]

2 голосов
/ 13 февраля 2010

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

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

0 голосов
/ 13 февраля 2010

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

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

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

...