JSP 类装入设置

您可以将 JavaServer Pages (JSP) 类配置为由 JSP 引擎的类装入器或由 Web 模块的类装入器装入。

缺省情况下,JSP 类由 JSP 引擎的类装入器的唯一实例装入。 JSP 引擎的类装入器允许 JSP 类在运行时重新装入(当 JSP 源或它的其中一个依赖项发生修改时)。 这将在必要时允许您重新装入单个 JSP 类,而不会影响任何其他已装入的 JSP 类。

在以下两种方案的任何一种方案中,JSP 类由 Web 模块的类装入器装入。
  1. JSP 引擎配置参数useFullPackageNames设置为 true,并且 JSP 文件在web.xml使用文件<servlet 类>本主题后面的表格中介绍了此场景。
  2. JSP 引擎配置参数 useFullPackageNames 和 disableJspRuntimeCompilation 都设置为 true。 在这种情况下,不需要将 JSP 文件配置为 web.xml 文件中的 Servlet。

将 JSP 文件配置为 Servlet

可以将 JSP 文件配置为 web.xml 文件中的 Servlet。 有两种方法可以解决这一问题。 在本节后文的表中描述了这两种方式。

将 JSP 文件配置为 Servlet 前,请考虑以下事项。
  1. 重新装入能力 - 如果需要 JavaServer Pages 文件运行时重新装入,那么 JavaServer Pages 文件的请求必须由 JSP 引擎处理。 这<servlet 类>本节后面表格中的场景禁用运行时 JSP 文件重新加载,而<jsp 文件>场景与重新加载兼容。
  2. 减少类加载器的数量——如果您不需要运行时重新加载修改后的 JSP 页面,并且想要减少类加载器实例的数量,那么您可以使用<servlet 类>下表中的情况。 同样,可以使用第 1 节中的方案 2,而无需将 JSP 文件配置为 Servlet。
表 1. 示例:在web.xml文件。 将 JSP 文件配置为 Servlet
方案分析 示例 兼容运行时重新装入 是否使用多个类装入器? useFullPackageNames
<jsp 文件> <servlet>

<servlet-name>jspOne</servlet-name>

<jsp-file>jspOne .jsp</jsp 文件>

</servlet>

可以为 true 或 false
<servlet 类> <servlet>

<servlet-name>jspTwo</servlet-name>

<servlet-class>_ibmjsp.jspTwo</servlet-class>

</servlet>

必须为 true

JSP 批处理编译器工具帮助您将 JavaServer Pages 文件配置为 Servlet。 什么时候useFullPackageNames为真,JSP 批处理编译器将生成<servlet><servlet 映射>它成功翻译和编译每个 JSP 文件的元素。 这些元素写入命名为 generated_web.xmlweb.xml 片段文件,它位于 Web 模块的二进制 WEB-INF 目录中(此目录位于部署的应用程序的 EAR 文件中),该模块由 JSP 文件批处理编译器处理。 您可以将部分或所有这些元素复制和粘贴到 web.xml 文件以将 JavaServer Pages 文件配置为 Servlet。

请记下应用程序服务器使用的 web.xml 的位置。 特定于应用程序的配置是从应用程序二进制文件(应用程序的 ear 文件)或配置库中获取的。 如果应用程序部署到WebSphere® Application Server将标志“使用二进制配置”设置为 true,然后WEB-INF/web.xml文件是在 Web 模块的二进制目录中查找的,而不是在配置存储库中查找。 这两个位置的示例如下所示:
  • [AIX Solaris HP-UX Linux Windows][z/OS]配置存储库目录的一个示例是{WAS_ROOT}/profiles/profilename/config/cells/cellname/applications/enterpriseappname/deployments/deployedname/webmodulename
  • [IBM i]配置存储库目录的一个示例是配置文件根/config/cells/cellName/applications/enterpriseAppName/deployments/deployedName/webModuleName
  • [AIX Solaris HP-UX Linux Windows][z/OS]应用程序二进制目录的一个示例是:{WAS_ROOT}/profiles/profilename/installedApps/nodename/EnterpriseAppName/WebModuleName/
  • [IBM i]应用程序二进制目录的一个示例是:配置文件根/installedApps/nodeName/EnterpriseAppName/WebModuleName/

如果在预部署的应用程序上执行了 JSP 批处理编译器,那么 web.xml 文件在 Web 模块的 WEB-INF 目录中。