Configurações de Recarregamento do Tempo de Execução do JSP (JavaServer Pages)
Os arquivos JSP (JavaServer Pages) podem ser convertidos e compilados no tempo de execução quando o arquivo JSP ou suas dependências forem modificados. Isso é conhecido como recarregamento da JSP.

O recarregamento de JSP é ativado por meio do parâmetro do mecanismo reloadEnabled de JSP no arquivo WEB-INF/ibm-web-ext.xmi or WEB-INF/ibm-web-ext.xml.
<jspAttributes xmi:id="JSPAttribute_1" name="reloadEnabled" value="true"/>
<?xml version="1.0" encoding="UTF-8"?>
<web-ext
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
version="1.0">
<jsp-attribute name="trackDependencies" value="true" />
<jsp-attribute name="disableJspRuntimeCompilation" value="true" />
<jsp-attribute name="reloadEnabled" value="true"/>
<reload-interval value="5"/>
<auto-encode-requests value="false"/>
<auto-encode-responses value="false"/>
<enable-directory-browsing value="false"/>
<enable-file-serving value="false"/>
<pre-compile-jsps value="false"/>
<enable-reloading value="true"/>
<enable-serving-servlets-by-class-name value="false" />
</web-ext>

No entanto, um módulo Java EE 5 ou posterior pode existir dentro de um aplicativo que inclui arquivos pré-Java EE 5 e usa a extensão do nome do arquivo .xmi.
Os arquivos ibm-webservices-ext.xmi, ibm-webservices-bnd.xmi, ibm-webservicesclient-bnd.xmi, ibm-webservicesclient-ext.xmi, e ibm-portlet-ext.xmi continuam a usar as extensões de arquivo .xmi.
sptcfgAtributo de Configuração | Configuração do Ambiente de Produção | Configuração do Ambiente de Desenvolvimento |
---|---|---|
reloadEnabled | falso(a) | true |
reloadInterval | n/d (ignorado se reloadEnabled por false) | aproximadamente 5 segundos |
trackDependencies | n/d (ignorado se reloadEnabled por false) | true - Como alterantiva, defina para false para melhorar o tempo de resposta se as dependências não estiverem mudando |
disableJspRuntimeCompilation | true - Como alternativa, defina como false se os arquivos JSP não forem pré-compilados e, portanto, precisarem ser compilados no primeiro pedido. | falso(a) |
O padrão para o parâmetro reloadEnabled é true. Se o parâmetro reloadEnabled for configurado como true, um arquivo JSP será recarregado no tempo de execução se o arquivo JSP e seu arquivo de classe não tiverem o mesmo registro de data e hora. Além disso, se trackDependencies é configurado como true, o arquivo JSP é recarregado se o registro de data e hora de qualquer uma de suas dependências foi alterado desde que o arquivo de classe JSP foi gerado pela última vez. Se o parâmetro reloadEnabled é configurado como false, um arquivo JSP ainda é compilado, se necessário, na primeira solicitação para ele, a menos que o parâmetro disableJspRuntimeCompilation seja true. Por exemplo, quando disableJspRuntimeCompilation é false e reloadEnabled é false, um arquivo JSP é compilado na primeira solicitação se o arquivo de classe está desatualizado. Ele não seria compilado nas solicitações subsequentes, mesmo se o arquivo de origem JSP fosse modificado ou o arquivo de classe fosse excluído, a menos que reloadEnabled seja true.
Intervalo de Recarregamento
O intervalo de recarregamento é configurado por meio do parâmetro do mecanismo JSP reloadInterval.
<jspAttributes xmi:id=JSPAttribute_1 name=reloadInterval value=5/>
<?xml version="1.0" encoding="UTF-8"?>
<web-ext
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
version="1.0">
<jsp-attribute name="trackDependencies" value="true" />
<jsp-attribute name="disableJspRuntimeCompilation" value="true" />
<jsp-attribute name="reloadInterval" value="5"/>
<reload-interval value="5"/>
<auto-encode-requests value="false"/>
<auto-encode-responses value="false"/>
<enable-directory-browsing value="false"/>
<enable-file-serving value="false"/>
<pre-compile-jsps value="false"/>
<enable-reloading value="true"/>
<enable-serving-servlets-by-class-name value="false" />
</web-ext>
Se o recarregamento está ativado, o valor de parâmetro reloadInterval determina o atraso entre verificações para ver se um arquivo JSP está desatualizado. Por exemplo, se reloadInterval é 5, o mecanismo JSP verifica se um arquivo JSP está desatualizado somente quando a última verificação desse tipo foi feita mais de cinco segundos antes da solicitação atual para o arquivo JSP. Quando o reloadInterval é excedido, a verificação de recarregamento é executada e o timer do intervalo de recarregamento é reconfigurado como 0 para esse arquivo JSP. Quanto maior o reloadInterval, menor é a frequência com a qual o mecanismo JSP verifica a necessidade de recarregar um arquivo JSP.
Monitoração de Dependência
O Rastreamento de Dependência é Configurado por meio do Parâmetro do Mecanismo JSP trackDependencies.
<jspAttributes xmi:id="JSPAttribute_1" name="trackDependencies" value="true"/>
<?xml version="1.0" encoding="UTF-8"?>
<web-ext
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
version="1.0">
<jsp-attribute name="trackDependencies" value="true" />
<jsp-attribute name="disableJspRuntimeCompilation" value="true" />
<jsp-attribute name="reloadInterval" value="5"/>
<reload-interval value="5"/>
<auto-encode-requests value="false"/>
<auto-encode-responses value="false"/>
<enable-directory-browsing value="false"/>
<enable-file-serving value="false"/>
<pre-compile-jsps value="false"/>
<enable-reloading value="true"/>
<enable-serving-servlets-by-class-name value="false" />
</web-ext>
- arquivos incluídos estaticamente no arquivo JSP
- arquivos de tag referidos no arquivo JSP (excluindo os arquivos de tag que estão em arquivos JAR)
- TLDs referidos no arquivo JSP (excluindo TLDs que estão em arquivos JAR)
Por exemplo, o arquivo toplevel.jsp inclui estaticamente o arquivo footer.jspf. Quando o arquivo toplevel.jsp é compilado, o caminho para o arquivo footer.jspf e seu registro de data e hora são armazenados no arquivo de classe da toplevel.jsp. Como resultado, o arquivo footer.jspf é modificado e o arquivo toplevel.jsp é solicitado. Agora que o intervalo de recarregamento para o arquivo toplevel.jsp foi excedido, o mecanismo JSP compara o registro de data e hora armazenado no arquivo de classe ao registro de data e hora do arquivo footer.jspf no disco. Como os timestamps são diferentes, o arquivo toplevel.jsp é compilado, captando a modificação do arquivo footer.jspf. Para que o rastreamento de dependência funcione, o valor de trackDependencies deve ser configurado como true no momento em que um arquivo JSP é solicitado no tempo de execução ou é processado pelo compilador de lotes.
Desativando a Compilação
A desativação da compilação do tempo de execução de JavaServer Pages é configurada por meio do parâmetro disableJspRuntimeCompilation do mecanismo JSP.
<jspAttributes xmi:id="JSPAttribute_1" name="disableJspRuntimeCompilation" value="true"/>
<?xml version="1.0" encoding="UTF-8"?>
<web-ext
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
version=1.0>
<jsp-attribute name="trackDependencies" value="true" />
<jsp-attribute name="disableJspRuntimeCompilation" value="true" />
<jsp-attribute name="reloadInterval" value="5"/>
<reload-interval value="5"/>
<auto-encode-requests value="false"/>
<auto-encode-responses value="false"/>
<enable-directory-browsing value="false"/>
<enable-file-serving value="false"/>
<pre-compile-jsps value="false"/>
<enable-reloading value="true"/>
<enable-serving-servlets-by-class-name value="false" />
</web-ext>
Se o parâmetro disableJspRuntimeCompilation é configurado como true, o mecanismo JSP no tempo de execução não converte e compila arquivos JSP; o mecanismo JSP carrega somente arquivos de classe pré-compilados. Os arquivos de origem do JSP não precisam estar presentes para que os arquivos de classe sejam carregados. Com essa opção definida para true, um aplicativo pode ser instalado sem a origem da JSP, mas deve ter os arquivos de classe pré-compilados. Há uma propriedade customizada do contêiner da Web com o mesmo nome que pode ser usado para determinar o comportamento de todos os módulos da Web instalados em um servidor. Se a propriedade customizada do contêiner da Web e a opção do mecanismo JSP estiverem configurados, a opção do mecanismo JSP terá precedência. A configuração do parâmetro disableJspRuntimeCompilation como true configura automaticamente reloadEnabled como false.
Recarregar a Sequência de Processamento
A sequência de processamento pertencente ao recarregamento do arquivo JSP quando trackDependencies é false é da na Figura 1.

Quando trackDependencies é true, o mecanismo JSP executa o processamento do sistema de arquivos adicional para determinar se qualquer uma das dependências de um arquivo JSP foi alterada desde que o arquivo JSP foi convertido e compilado pela última vez. A figura 2 mostra os processos adicionais que são executados no caminho "Não" do gráfico de fluxo intitulado "Os arquivo de classe JSP estão desatualizados?". Você pode ver que o caminho tomado quando disableJspRuntimeCompilation é true é o caminho mais eficiente.
