java.lang.IllegalArgumentException: недопустимый <url-pattern> в отображении сервлета - PullRequest
39 голосов
/ 25 августа 2008
<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>

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

java.lang.IllegalArgumentException: недопустимый <шаблон url> в отображении сервлета

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

Ответы [ 2 ]

93 голосов
/ 26 августа 2008
<url-pattern>*NEXTEVENT*</url-pattern>

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

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

  • Строка, начинающаяся с символа "/" и заканчивающаяся "/ *" суффикс используется для отображения пути.
  • Строка, начинающаяся с префикса ix *. ’, Используется как расширение. отображение.
  • Строка, содержащая только символ ’/’, обозначает «по умолчанию» сервлет приложения. В этом в случае, если путь сервлета является запросом URI минус контекстный путь и информация о пути не указана.
  • Все остальные строки используются только для точных совпадений.

Подробнее см. Раздел 12.2 Спецификации сервлета Java Версия 3.1.

1 голос
/ 15 сентября 2008

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

...