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 > в отображении сервлета
Будет очень полезно, если кто-то может намекнуть на ошибку.
Ответы
Ответ 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) или что-то подобное.