Configuración del contenedor Web para el acceso a archivos estáticos JavaServer Pages
El contenedor web busca archivos estáticos y archivos JavaServer Pages (JSP) en cuatro ubicaciones diferentes, dependiendo de la configuración
de la aplicación. Esta búsqueda es relevante para encontrar el recurso adecuado para atender a una solicitud de entrada y para los resultados devueltos
por las siguientes API:
URL ServletContext.getResource(String path)
Set ServletContext.getResourcePaths(String path)
Atención: Sólo se realizan búsquedas en los archivos estáticos cuando la propiedad fileServing está habilitada y la aplicación no incluye una correlación de servlets /*. Asimismo, los archivos JSP incluyen archivos con las siguientes extensiones, además de otros patrones que están definidos en el archivo web.xml
- .jsp
- .jspx
- .jsw
- .jsv
Las cuatro ubicaciones, por orden de prioridad, son las siguientes:
- Directorio WAR de la aplicación
- El contenedor web busca primero un recurso solicitado en el directorio WAR de la aplicación. No obstante, no puede dar servicio a recursos en los directorios WEB-INF o META-INF para las solicitudes de entrada, aunque se pueda acceder a ellos utilizando los métodos getResource() y getResourcePaths().
- Raíces de documentos previos al fragmento
- El contenedor web busca en segundo lugar en las raíces de documentos previos al fragmento definidas por la aplicación. Defina una raíz de documentos previos al fragmento en el archivo ibm-web-ext.xmi, que se encuentra en el directorio WEB-INF de la aplicación. Defina una raíz de documentos previos al fragmento para los archivos estáticos o los archivos JSP de la siguiente manera:
Archivos estáticos: <fileServingAttributes xmi:id="<nombre proporcionado por usuario>" name="preFragmentExtendedDocumentRoot" value="<valor-suministrado-por-usuario>"/>
Archivos JSP: <jspAttributes xmi:id="<nombre proporcionado por usuario>" name="preFragmentExtendedDocumentRoot" value=<valor proporcionado por usuario>"/>
El <nombre proporcionado por usuario> puede ser una lista de directorios y/o una lista de jars. Por ejemplo:
Si el <nombre proporcionado por usuario> contiene sólo una lista de un directorio y dicho directorio contiene archivos jar, no busca dentro de estos archivos jar. Busca archivos estáticos y archivos JSP únicamente en ese directorio, pero fuera de los archivos jar. Si los archivos estáticos o JSP están en un jar, los archivos estáticos o jsp no pueden estar dentro de la carpeta META-INF del archivo jar ya que se trata de una carpeta restringida, y el <nombre proporcionado por el usuario> debe contener una vía de acceso completa al archivo jar.<fileServingAttributes name="extendedDocumentRoot" value="C:\EDR_directory,C:\my\path\to\jarEDR.jar"/>
Atención: Raíces de documentos previos al fragmento es una nueva función en WebSphere Application Server Versión 9.0.
- Directorios META-INF/resources de fragmentos en el directorio WEB-INF/Lib del archivo WAR de la aplicación
- Después de realizar búsquedas en las raíces de documentos previos al fragmento, el contenedor web busca en los fragmentos web. Un fragmento web comprende un archivo JAR de un
directorio WEB-INF/lib de la aplicación. El JAR puede incluir recursos estáticos de un directorio META-INF/resources que se definen dentro del archivo
JAR. Para evitar que el contenedor web busque en directorios META-INF/resources, establezca la
propiedad personalizada com.ibm.ws.webcontainer.SkipMetaInfResourcesProcessing del contenedor web en true. El valor predeterminado para la
propiedad personalizada es false.
com.ibm.ws.webcontainer.SkipMetaInfResourcesProcessing = true
Atención: Los directorios META-INF/resources de fragmentos en el directorio WEB-INF/Lib del archivo WAR de la aplicación constituyen una nueva función en WebSphere Application Server Versión 9.0.
- Raíces de documento ampliado
- Por último, el contenedor web busca en cualquier aplicación definida como raíz de documento ampliado. Las raíces de documento ampliado estaban
disponibles en releases anteriores y se definen en el archivo ibm-web-ext.xmi, que se encuentra en el directorio WEB-INF de la aplicación. Defina la raíz de documento ampliado para archivos estáticos o archivos JSP del siguiente modo:
Archivos estáticos: <fileServingAttributes xmi:id="<user provided name>" name="extendedDocumentRoot" value="<valor-suministrado-por-usuario>"/>
Archivos JSP: <jspAttributes xmi:id="<nombre proporcionado por usuario>" name="extendedDocumentRoot" value="<valor-suministrado-por-usuario>"/>
com.ibm.ws.webcontainer.SkipMetaInfResourcesProcessing = true
El <nombre proporcionado por usuario> puede ser una lista de directorios y/o una lista de jars. Por ejemplo:
Si el <nombre proporcionado por usuario> contiene sólo una lista de un directorio y dicho directorio contiene archivos jar, no busca dentro de estos archivos jar. Busca archivos estáticos y archivos JSP únicamente en ese directorio, pero fuera de los archivos jar. Si los archivos estáticos o JSP están en un jar, los archivos estáticos o jsp no pueden estar dentro de la carpeta META-INF del archivo jar ya que se trata de una carpeta restringida, y el <nombre proporcionado por el usuario> debe contener una vía de acceso completa al archivo jar.<fileServingAttributes name="extendedDocumentRoot" value="C:\EDR_directory,C:\my\path\to\jarEDR.jar"/>
Atención: Puede establecer la propiedad personalizada com.ibm.ws.webcontainer.ServeWelcomeFileFromExtendedDocumentRoot en true para habilitar el servicio de páginas de bienvenida estáticas desde una raíz de documento ampliado de archivo estático. El valor predeterminado de la propiedad personalizada es false.com.ibm.ws.webcontainer.ServeWelcomeFileFromExtendedDocumentRoot = true
Si la propiedad com.ibm.ws.webcontainer.ServeWelcomeFileFromExtendedDocumentRoot se establece en true, el contenedor web buscará en una raíz de documento ampliado de archivo estático un archivo de bienvenida estático para dar servicio a una solicitud formada por un URL parcial válido. Por ejemplo, si una solicitud especifica sólo el contexto de aplicación y se especifica un archivo de bienvenida como index.html, la propiedad debe establecerse si se index.html va a servirse desde un documento ampliado de archivo estático.
El valor predeterminado es false.com.ibm.ws.webcontainer.enablepartialurltoextendeddocumentroot = true
Si esta propiedad se establece en true, el contenedor web incluye el contenido de una raíz de documento ampliado de archivo estático al determinar si una solicitud de entrada es para un URL parcial válido. Por ejemplo, si una solicitud especifica un URL que termina en /<application context>/<text> y <text> no se correlaciona con un archivo estático o un servlet, el contenedor web sólo lo considera un URL parcial válido si <text> es un directorio válido de la aplicación. Como resultado, si el directorio <text> sólo existe en una raíz de documento ampliado de archivo estático, debe establecerse esta propiedad para que el URI se considere un URI parcial válido.
Importante: Estas propiedades no son necesarias para las raíces de documentos previos al fragmento de archivos estáticos. Asimismo, cuando se determina un URL válido parcial, el contenedor web no tiene en cuenta las raíces de documentos ampliados y previos al fragmento JSP.