Pregunta

Estoy intentando implementar una aplicación JSF muy simple y mi primera (después de un muy buen tutorial de BalusC) en el servidor local de Glassfish.Completé todos los pasos para crear la aplicación.Y cuando intenté implementar la aplicación en el servidor Glassfish, simplemente falló y apareció el siguiente mensaje de excepción:

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

¿Alguien podría explicar dónde está el fallo y cómo puedo solucionarlo?

¿Fue útil?

Solución

Este no es un patrón de URL válido.Puede organizar la asignación como asignación de prefijos o mapeo de extensiones (desde la especificación JSF 2.0 ):

Mapeo del prefijo:

<servlet-mapping>
  <servlet-name> faces-servlet-name </servlet-name>
  <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

Mapeo de extensiones:

<servlet-mapping>
  <servlet-name> faces-servlet-name </servlet-name>
  <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

Otros consejos

Su <url-pattern> debe tener una extensión que coincida (comienza con un *) o coincidencia de prefijos (comenzando con /) incluido, no sólo xhtml.

Así es como hice el mío.

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

Las reglas para las asignaciones de servlets se tratan en la Especificaciones de Servlet 3.0:

Especificación de asignaciones

En el descriptor de implementación de la aplicación web, la siguiente sintaxis se usa para definir asignaciones:

  • Una cadena que comienza con un / personaje y terminando con un /*El sufijo se utiliza para el mapeo de rutas.
  • Una cadena que comienza con un *. El prefijo se utiliza como mapeo de extensión.
  • La cadena vacía ("") es un patrón de URL especial que se asigna exactamente a la raíz de contexto de la aplicación, es decir, solicitudes del formulario http://host:port/<contextroot>/.En este caso, la información de ruta es / y la ruta del servlet y la ruta de contexto son una cadena vacía ("").
  • Una cadena que contiene sólo el / El carácter indica el servlet "predeterminado" de la aplicación.En este caso, la ruta del servlet es la solicitud, menos la ruta de contexto y la información de la ruta es nula.
  • Todas las demás cadenas se utilizan únicamente para coincidencias exactas.

Cuando encuentre este error, verifique su web.xml y cualquier anotación de mapeo (servlet web, Filtro web, etc.)

Puede encontrar recomendaciones para el mapeo de servlets JSF en el Especificaciones JSF 2.0.

Al usar la asignación de extensión, se recomienda la siguiente asignación, pero no es necesario:

<servlet-mapping>
<servlet-name> faces-servlet-name </servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top