Подтвердить что ты не робот

Java.lang.IllegalArgumentException: Неверный <url-pattern> в отображении сервлета

<servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>workflow.WDispatcher</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>*NEXTEVENT*</url-pattern>
</servlet-mapping>

Выше приведен фрагмент из Tomcat web.xml. Шаблон URL *NEXTEVENT* при запуске бросает

java.lang.IllegalArgumentException: Неверный < url-pattern > в отображении сервлета

Будет очень полезно, если кто-то может намекнуть на ошибку.

4b9b3361

Ответ 1

<url-pattern>*NEXTEVENT*</url-pattern>

Шаблон URL недействителен. Он может либо заканчиваться звездочкой, либо начинаться с одного (обозначать сопоставление расширения файлов).

Спецификация url-шаблона:

  • Строка, начинающаяся с символа '/и заканчивая символом'/* суффикс используется для отображения пути.
  • Строка, начинающаяся с символа '*. префикс используется как расширение отображение.
  • Строка, содержащая только символ /, указывает на "default" сервлет приложения. В этом case, путь сервлета - запрос URI минус контекстный путь и информация о пути - null.
  • Все остальные строки используются только для точных совпадений.

Подробнее см. раздел 12.2 Java Servlet Specification версии 3.1.

Ответ 2

Обходной путь, который может быть достигнут, заключается в том, чтобы добавить фильтр сервлета для повторной записи URL, например. перезаписать NEXTEVENT до/NEXTEVENT/(один до NEXTEVENT)/(один после NEXTEVENT) или что-то подобное.