Configuração do Contêiner de Web para Acesso ao Arquivo Estático JavaServer Pages
O contêiner de Web procura por arquivos estáticos e arquivos JavaServer Pages (JSP) em até quatro locais diferentes,
dependendo da configuração do aplicativo. Esta procura é relevante para a localização do recurso apropriado para entregar
uma solicitação de entrada e para obter os resultados retornados das seguintes APIs:
URL
ServletContext.getResource(String path)
Set ServletContext.getResourcePaths(String path)
Atenção: Os arquivos estáticos são procurados
apenas quando a propriedade fileServing é ativada e o aplicativo não inclui um mapeamento de
servlet /*. Além disso, os arquivos JSP incluem arquivos com as seguintes extensões, além de quaisquer
outros padrões que são definidos no arquivo web.xml
- .jsp
- .jspx
- .jsw
- .jsv
Os quatro locais, em ordem de prioridade, são os seguintes:
- Diretório WAR do aplicativo
- O contêiner de Web primeiro procura por um recurso solicitado no diretório WAR do aplicativo. Entretanto, não é possível entregar recursos sob os diretórios WEB-INF ou META-INF para solicitações de entrada, embora sejam acessíveis usando os métodos getResource() e getResourcePaths().
- Raízes do documento de pré-fragmento
- O contêiner da Web procura por quaisquer raízes de documento de pré-fragmento definido pelo aplicativo em segundo. Defina um raiz de documento de pré-fragmento no arquivo ibm-web-ext.xmi localizado no diretório WEB-INF
para o aplicativo. Defina uma raiz de documento de pré-fragmento para arquivos estáticos ou arquivos JSP, como a seguir:
Arquivos estáticos: <fileServingAttributes xmi:id="<user-provided name>" name="preFragmentExtendedDocumentRoot" value="<user provided value>"/>
Arquivos JSP: <jspAttributes xmi:id="<user provided name>" name="preFragmentExtendedDocumentRoot" value=<user provided value>"/>
O <user provided name> pode ser uma lista de diretórios e/ou uma lista de JARs. Por exemplo:
Se o <user provided name> contiver somente uma lista de um diretório e esse diretório contiver arquivos JAR, ele não procurará dentro desses arquivos JAR. Ele procurará arquivos estáticos e arquivos JSP files somente dentro desse diretório, mas fora de qualquer arquivo JAR. Se os arquivos estáticos ou JSP estiverem em um JAR, os arquivos estáticos ou JSP não poderão estar dentro da pasta META-INF do arquivo JAR, pois ele é uma pasta restrita, e o <user provided name> deve conter um caminho completo para o arquivo JAR.<fileServingAttributes name="extendedDocumentRoot" value="C:\EDR_directory,C:\my\path\to\jarEDR.jar"/>
Atenção: As raízes do documento de pré-fragmento é uma nova função no WebSphere Application Server Versão 9.0.
- Diretórios META-INF/resources de fragmentos sob o diretório WEB-INF/Lib no arquivo WAR do aplicativo
- Após a procura por raízes do documento de pré-fragmento, o contêiner de Web procura por fragmentos da Web. Um
fragmento da Web consiste em um arquivo JAR em um diretório WEB-INF/lib do aplicativo. O JAR pode incluir recursos
estáticos em um diretório META-INF/resources que são definidos dentro do arquivo JAR. Para evitar que o contêiner da Web procure nos diretórios META-INF/resources, configure a propriedade customizada do
contêiner da Web com.ibm.ws.webcontainer.SkipMetaInfResourcesProcessing como true. O valor padrão para a
propriedade customizada é false.
com.ibm.ws.webcontainer.SkipMetaInfResourcesProcessing = true
Atenção: Os diretórios META-INF/resources de fragmentos sob o diretório WEB-INF/Lib no arquivo WAR do aplicativo é uma nova função no WebSphere Application Server Versão 9.0.
- Raízes de documentos estendidos
- Finalmente, o contêiner da Web procura por qualquer aplicativo definido como raízes de documentos estendidos. As
raízes de documentos estendidos estavam disponíveis nos releases anteriores e são definidas no arquivo
ibm-web-ext.xmi, que está localizado no diretório WEB-INF do aplicativo. Defina a raiz de documento
estendido para arquivos estáticos ou arquivos JSP, como a seguir:
Arquivos estáticos: <fileServingAttributes xmi:id="<user provided name>" name="extendedDocumentRoot" value="<user provided value>"/>
Arquivos JSP: <jspAttributes xmi:id="<user provided name>" name="extendedDocumentRoot" value=<user provide value>"/>
com.ibm.ws.webcontainer.SkipMetaInfResourcesProcessing = true
O <user provided name> pode ser uma lista de diretórios e/ou uma lista de JARs. Por exemplo:
Se o <user provided name> contiver somente uma lista de um diretório e esse diretório contiver arquivos JAR, ele não procurará dentro desses arquivos JAR. Ele procurará arquivos estáticos e arquivos JSP files somente dentro desse diretório, mas fora de qualquer arquivo JAR. Se os arquivos estáticos ou JSP estiverem em um JAR, os arquivos estáticos ou JSP não poderão estar dentro da pasta META-INF do arquivo JAR, pois ele é uma pasta restrita, e o <user provided name> deve conter um caminho completo para o arquivo JAR.<fileServingAttributes name="extendedDocumentRoot" value="C:\EDR_directory,C:\my\path\to\jarEDR.jar"/>
Atenção: É possível configurar a propriedade customizada com.ibm.ws.webcontainer.ServeWelcomeFileFromExtendedDocumentRoot como true para ativar a entrega de páginas de boas-vindas estáticas a partir de uma raiz de documento estendido de arquivo estático. O valor padrão para a propriedade customizada é false.com.ibm.ws.webcontainer.ServeWelcomeFileFromExtendedDocumentRoot = true
Quando a propriedade com.ibm.ws.webcontainer.ServeWelcomeFileFromExtendedDocumentRoot é configurada como true, o contêiner da Web procura em uma raiz de documento estendido de arquivo estático por um arquivo de boas-vindas estático para atender uma solicitação consistindo em uma URL parcial válida. Por exemplo, se uma solicitação especifica apenas o contexto de aplicativo, e um arquivo de boas-vindas é especificado como index.html, a propriedade deve ser configurada se index.html precisar ser entregue a partir de um documento estendido de arquivo estático.
O valor-padrão é false.com.ibm.ws.webcontainer.enablepartialurltoextendeddocumentroot = true
Se esta propriedade for configurada como true, o contêiner da Web incluirá o conteúdo de uma raiz de documento estendido de arquivo estático ao determinar se uma solicitação de entrada é destinada para uma URL parcial válida. Por exemplo, se uma solicitação especifica uma URL que termina com /<application context>/<text> e <text> não mapeia para um servlet ou arquivo estático, o contêiner da Web considera esta URL uma URL parcial válida apenas se <text> for um diretório válido do aplicativo. Como resultado, se o diretório <text> existir apenas em uma raiz de documento estendido de arquivo estático, esta propriedade deve ser configurada para o URI para ser considerado um URI parcial válido.
Importante: Essas propriedades não são necessárias para raízes do documento de pré-fragmento de arquivo estático. Além disso, ao determinar uma URL parcial válida, o contêiner da Web não considera pré-fragmento JSP e raízes do documento estendido.