java.lang.IllegalArgumentException: недопустимый шаблон URL: [xhtml]

Я пытаюсь развернуть очень простое и мое первое приложение JSF (после действительно хорошее руководство от BalusC) на локальном сервере Glassfish. Я выполнил все шаги по созданию заявки. И когда я попытался развернуть приложение на сервере Glassfish, он просто потерпел неудачу со следующим сообщением об исключении: -

    cannot Deploy Playground
    Deployment Error for module: Playground: Exception while deploying the app : 
    java.lang.IllegalArgumentException: Invalid URL Pattern: [xhtml]

Может ли кто-нибудь объяснить, в чем ошибка и как я могу ее исправить?


person Rajat Gupta    schedule 26.03.2011    source источник
comment
Как ваш url-pattern объявлен в вашем web.xml сервлете Faces?   -  person Buhake Sindi    schedule 26.03.2011


Ответы (3)



Ваш <url-pattern> должен иметь либо соответствие расширения (начинается с *), либо соответствие префикса (начиная с /), а не только xhtml.

Вот как я сделал свой.

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
person Buhake Sindi    schedule 26.03.2011
comment
Большое спасибо, Elite! Это сработало! - person Rajat Gupta; 26.03.2011
comment
Проголосуйте за то, чтобы стать первым, кто прокомментировал этот вопрос. - person Matt Handy; 26.03.2011

Правила сопоставления сервлетов описаны в спецификациях сервлетов 3.0:

Спецификация сопоставлений

В дескрипторе развертывания веб-приложения для определения сопоставлений используется следующий синтаксис:

  • Строка, начинающаяся с символа / и заканчивающаяся суффиксом /*, используется для сопоставления пути.
  • Строка, начинающаяся с префикса *., используется как отображение расширения.
  • Пустая строка ("") - это специальный шаблон URL, который точно соответствует корню контекста приложения, то есть запросам формы http://host:port/<contextroot>/. В этом случае информация о пути - /, а путь сервлета и путь контекста - это пустая строка ("").
  • Строка, содержащая только символ /, указывает сервлет приложения по умолчанию. В этом случае путь сервлета - это URI запроса за вычетом пути контекста, а информация о пути равна нулю.
  • Все остальные строки используются только для точных совпадений.

При возникновении этой ошибки проверьте свой web.xml и любые аннотации сопоставления (WebServlet, WebFilter и т. Д.)

Вы можете найти рекомендации по отображению сервлетов JSF в спецификации JSF 2.0.

При использовании сопоставления расширений рекомендуется, но не обязательно, следующее сопоставление:

<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
person McDowell    schedule 26.03.2011