Что делает объявление web-app, совместимое с Servlet 3.0 в web.xml?
Я развертываю веб-приложение, которое объявлено в web.xml и развернуто как .war файл.
Я развертываю на Jetty 9.1.x(но я думаю, что этот вопрос не специфичен для контейнера).
Мой файл web.xml довольно старый и объявляет себя как приложение Servlet 2.4:
<web-app version="2.4" id="my_app"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
Моя конфигурация фактически объявляет некоторые функции Servlet 3.0, например страницу с ошибкой по умолчанию. Эти функции не проверяются в соответствии с схемой, но функции, похоже, работают правильно.
Поскольку я использую 3.0 функции, я хотел бы изменить объявление как правильное:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
Но я боюсь сделать это, потому что я не понимаю, какая разница для Jetty.
Будет ли изменение объявления повлиять на поведение Jetty при работе? Привлекает ли Jetty приложение 2.4 как-то иначе, чем приложение 3.0?
Ответы
Ответ 1
Вы можете просто заменить объявление схемы с 2.4 на 3.0.
Научный метод
Сначала я отправился, чтобы доказать это, выполнив diff
между 2.4 и 2,5, а другой - 2,5 и 3.0.
Я убедил себя, что различия между 2.4 и 2,5 являются только аддитивными, а пространство имен смещено от j2ee
до javaee
.
Тем не менее схема xsd для 3.0 меньше 1/3 других двух версий. Не уверен, как действовать в этом случае (любые идеи приветствуются!)
Вы можете скачать все схемы здесь и сделать сравнение самостоятельно:
Не так научный метод
Вот какие новые статьи описывают каждую новую версию стандарта:
Если вы читаете, изменения в дескрипторе web.xml
, упомянутые в статьях, являются минутами.
Что бы я сделал, просто перечислить все элементы в исходном web.xml
и подтвердить, что они существуют в этом документе, описывая схему 3.0.
Надеюсь, это поможет!