JSP 引擎配置参数
在 WebSphere® Application Server中,您可以配置 Java™Server Pages (JSP) 引擎配置参数,以实现生产服务器环境中的最佳性能,并满足开发人员在开发环境中的需求。
JSP 引擎参数区分大小写。 如果为参数指定的值由两个或更多以空格分隔的字组成,那么必须对此值添加引号。 某些参数会影响为 JSP 或标记文件生成的 Java 源。 这些参数由以下语句标识: 此参数需要重新生成 Java 源。
此语句指示如果修改了配置参数,那么在重新转换 JSP 文件并重新编译 Java 源之前,该参数的值不会更改任何内容。
allowMultipleAttributeValues
指定 JSP 容器是否可以存储定制标记属性的多个值。 将此参数设置为 true 可允许 JSP 容器存储多个值。 此参数的缺省值为 false。 此参数需要重新生成 Java 源。
compileWithAssert
指定生成的 Java 类是否应包含对 Developer Kit , Java Technology Edition 1.4 断言工具的支持。 将此参数设置为 true 的效果是将 -source 1.4 选项传递到 Java 编译器。 此参数的缺省值为 false。 此参数需要重新生成 Java 源。
classdebuginfo
指定编译器是否在所生成的类文件中包括调试信息。 将该参数设置为 true 时, -g 选项将传递给 Java 编译器。 此参数的缺省值为 false。 此参数需要重新生成 Java 源。
convertAttrValueToString
指定在使用重复标记的开始和结束属性之前,是否将这些属性转换成字符串。 此参数的缺省值为 false。 此参数需要重新生成 Java 源。
废弃
指定编译器在编译生成的 Java 源时是否生成废弃警告。 将此参数设置为 true 时,会将 -deprecation 选项传递到 Java 编译器。 此参数的缺省值为 false。 此参数需要重新生成 Java 源。
disableElCache
如果由于表达式求值程序持有散列映射而迂到内存不足情况,请将此参数设置为 true 以禁用 commons-el 表达式高速缓存。 此参数的缺省值为 false。
disableJspRuntimeCompilation
如果此选项设为 true,JSP 引擎在运行时不转换和编译 JSP 文件;JSP 引擎只装入预编译的类文件。 装入类文件时,不要求 JSP 源文件已存在。 将此选项设置为 true 时,您可以安装不带 JSP 源文件的应用程序,但该应用程序必须带有已进行预编译的类文件。 同名的 Web 容器定制属性用于确定服务器中安装的所有 Web 模块的行为。 如果同时设置了 Web 容器定制属性和 JSP 引擎选项,那么 JSP 引擎选项优先。 此参数的缺省值为 false。
disableTldSearch
将此选项设置为 true 以在启动应用程序时,阻止 JSP 引擎在应用程序安装目录中搜索标记库描述符 (TLD) 文件。 如果将此选项设置为 false,那么当应用程序启动时,JSP 引擎会在应用程序安装目录中搜索 TLD 文件。 此参数的缺省值为 false。
Web 容器定制属性 com.ibm.wsspi.jsp.disableTldSearch 可以用于指定应用程序启动时,安装在服务器中的所有 Web 模块中的 JSP 引擎是否不会在应用程序安装目录中搜索 TLD 文件。 如果为 Web 容器定制属性和 JSP 引擎选项设置的值有冲突,那么将优先使用 JSP 引擎选项的设置。
evalQuotedAndEscapedExpression
将此选项设置为 true,可在确定是否计算表达式时正确处理转义字符和引号。
<input type=text
value=${fn:substring('1234567', 0,4)}
/>由于在 fn:substring 语句前直接使用双引号,因此 JSP 文件无法编译,因为转换程序未将函数映射器添加到生成的 Java 类。 另外,如果使用反斜杠 (\$) 对美元符号 ($) 进行转义,那么转换程序仍会尝试对表达式求值,而不是将其视为文字串。 要正确处理转义字符和引号,必须在失败应用程序的 ibm-web-ext.xmi 或 ibm-web-ext.xml 文件中将 evalQuotedAndEscapedExpression 设置为 true 。<jspAttributes xmi:id=JSPAttribute_1
name=evalQuotedAndEscapedExpression
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
>
<file-serving-attribute name=extendedDocumentRoot
value=/opt/extDocRootDir
/>
<jsp-attribute name=evalQuotedAndEscapedExpression
value=true
/>
<jsp-attribute name=extendedDocumentRoot
value=/opt/extDocRootDir
,${MY_CUSTOM_VARIABLE}
/>
<reload-interval value=3
/>
<auto-encode-requests value=false
/>
<auto-encode-responses value=false
/>
<enable-directory-browsing value=false
/>
<enable-file-serving value=true
/>
<pre-compile-jsps value=false
/>
<enable-reloading value=true
/>
<enable-serving-servlets-by-class-name value=false
/>
</web-ext>要在所有 Web 应用程序之间全局应用此行为,您可以将 com.ibm.wsspi.jsp.evalQuotedAndEscapedExpression Web 容器定制属性设置为 true。
extendedDocumentRoot
当应用程序需要访问应用程序 Web 应用程序归档 (WAR) 目录外部的文件时,请使用已扩展的文档根工具。 此工具允许您使用一个或多个目录路径来配置应用程序,您可以从这些目录路径中提供静态文件和 JSP 文件。 当应用程序需要访问位于 Web 应用程序归档 (WAR) 目录外部的文件时,您可以使用此属性。 例如,如果几个应用程序需要访问一组公用文件,那么您可以将这些公用文件放在可作为扩展文档根目录来连接每一个应用程序的目录中。
要使用扩展文档根来配置应用程序,请将 extendedDocumentRoot 属性作为文件服务属性添加到应用程序的 ibm-web-ext.xmi 或 ibm-web-ext.xml 文件。 此属性的值是一个用逗号分隔的目录列表,这些目录充当静态文件的根目录位置。
<fileServingAttributes xmi:id=FileServingAttribute_1
name=extendedDocumentRoot
value=/opt/extDocRootDir
/>- 对 http://localhost:9080/context_root/sample.html 资源的请求要求 sample.html 文件位于 /opt/extDocRootDir/sample.html 目录结构中。
- 对 http://localhost:9080/context_root/myDir/sample.gif 资源的请求要求 sample.gif 文件位于 /opt/extDocRootDir/myDir/sample.gif 目录结构中。
<?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
>
<file-serving-attribute name=extendedDocumentRoot
value=/opt/extDocRootDir
/>
<jsp-attribute name=evalQuotedAndEscapedExpression
value=true
/>
<jsp-attribute name=extendedDocumentRoot
value=/opt/extDocRootDir
, ${MY_CUSTOM_VARIABLE}
/>
<reload-interval value=3
/>
<auto-encode-requests value=false
/>
<auto-encode-responses value=false
/>
<enable-directory-browsing value=false
/>
<enable-file-serving value=true
/>
<pre-compile-jsps value=false
/>
<enable-reloading value=true
/>
<enable-serving-servlets-by-class-name value=false
/>
</web-ext>要使用从中提供 JSP 文件的扩展文档根来配置应用程序,请将 extendedDocumentRoot 属性作为 JSP 属性添加到 ibm-web-ext.xmi 或 ibm-web-ext.xml 文件。 此属性的值是一个用逗号分隔的目录列表,这些目录充当 JSP 文件的根目录位置。
<jspAttributes xmi:id=JSPAttribute_1
name=extendedDocumentRoot
value=/opt/extDocRootDir
/><?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
>
<file-serving-attribute name=extendedDocumentRoot
value=/opt/extDocRootDir
/>
<jsp-attribute name=evalQuotedAndEscapedExpression
value=true
/>
<jsp-attribute name=extendedDocumentRoot
value=/opt/extDocRootDir
, ${MY_CUSTOM_VARIABLE}
/>
<reload-interval value=3
/>
<auto-encode-requests value=false
/>
<auto-encode-responses value=false
/>
<enable-directory-browsing value=false
/>
<enable-file-serving value=true
/>
<pre-compile-jsps value=false
/>
<enable-reloading value=true
/>
<enable-serving-servlets-by-class-name value=false
/>
</web-ext>还可以使用 extendedDocumentRoot 属性将多个节点上的 WebSphere 变量定义至相应的目录。
<jspAttributes xmi:id=JSPAttribute_2
name=extendedDocumentRoot
value=${MY_CUSTOM_VARIABLE}
/> <jsp-attribute name=extendedDocumentRoot
value=${MY_CUSTOM_VARIABLE}
/>其中,MY_CUSTOM_VARIABLE 是您要在多个节点上定义的 WebSphere 变量。<?xml version=1.0
encoding=UTF-8
?>
<com.ibm.ejs.models.base.extensions.webappext:WebAppExtension xmi:version=2.0
xmlns:xmi=http://www.omg.org/XMI
xmlns:com.ibm.ejs.models.base.extensions.webappext=webappext.xmi
xmi:id=WebAppExtension_1
reloadInterval=3
reloadingEnabled=true
fileServingEnabled=true
>
<webApp href=WEB-INF/web.xml#WebApp_ID/
>
<fileServingAttributes xmi:id=FileServingAttribute_1
name=extendedDocumentRoot
value=/opt/extDocRootDir/
>
<jspAttributes xmi:id=JSPAttribute_1
name=extendedDocumentRoot
value=/opt/extDocRootDir/
>
<com.ibm.ejs.models.base.extensions.webappext:WebAppExtension><?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
>
<file-serving-attribute name=extendedDocumentRoot
value=/opt/extDocRootDir
/>
<jsp-attribute name=evalQuotedAndEscapedExpression
value=true
/>
<jsp-attribute name=extendedDocumentRoot
value=/opt/extDocRootDir
,${MY_CUSTOM_VARIABLE}
/>
<reload-interval value=3
/>
<auto-encode-requests value=false
/>
<auto-encode-responses value=false
/>
<enable-directory-browsing value=false
/>
<enable-file-serving value=true
/>
<pre-compile-jsps value=false
/>
<enable-reloading value=true
/>
<enable-serving-servlets-by-class-name value=false
/>
</web-ext>如果该请求是对欢迎文件的有效部分请求,那么将返回 404 错误。 如果 JSP 文件位于 JAR 文件内并且 reloadEnabled 属性值设置为 true,那么 JAR 文件的时间戳记将用于 isOutDated 检查以进行重新编译。 此参数的缺省值是空值。
但是, Java EE 5 或更高版本的模块可以存在于包含Java EE 5 之前的文件并使用 .xmi 文件扩展名的应用程序中。
ibm-webservices-ext.xmi、ibm-webservices-bnd.xmi、ibm-webservicesclient-bnd.xmi、ibm-webservicesclient-ext.xmi 和 ibm-portlet-ext.xmi 文件继续使用 .xmi 文件扩展名。
javaEncoding
指定生成 .java 文件以及 Java 编译器编译该文件时使用的编码。 当 JSP 页面的页面编码与 UTF-8 不兼容时,请设置此参数。 设置 javaEncoding 时,将通过 -encoding 参数将编码传递到 Java 编译器。 请注意,Jikes 不支持该编码。 缺省值为 UTF-8。 此参数需要重新生成 Java 源。
jdkSourceLevel
此 JSP 引擎参数是在 WebSphere Application Server V 6.1中引入的。 尽管在 V6.1 中仍然可以使用 compileWithAssert,但应该使用此参数代替 compileWithAssert 参数。
- 值 13 将禁用 JDK 1.4、JDK 5.0、JDK 6.0 和 JDK 7.0 的所有新的语言功能部件。
- 值 14 将启用声明工具并禁用 JDK 5.0、JDK 6.0 和 JDK 7.0 的所有新的语言功能部件。
- 值 15 将启用声明工具并禁用 JDK 6.0 和 JDK 7.0 的所有新的语言功能部件。
- 值 16 将启用声明工具并禁用 JDK 7.0 的所有新的语言功能部件。
- 值 17 将启用 JDK 7.0 的新功能部件。
- 值 18 将启用 JDK 8.0 的新功能部件。
jspClassLoaderLimit
WebSphere Application Server 为应用程序中的每个 JSP 创建 JSPExtensionClassLoader 对象。 这会导致这些对象占用更多本机内存,从而引起 OutOfMemoryException。 此整数值确定保持装入到内存中的 JSPExtensionClassLoader 对象数。
<jspAttributes xmi:id="JSPAttribute_1" name="jspClassLoaderLimit" value="1500"/>
jspClassLoaderExclusionList
虽然 jspClassLoaderLimit 用于指定在内存中保持装入的 JSPExtensionClassLoader 对象数,但此逗号分隔的 JSP 值列表指示不进行卸载的 JSP,而不考虑 jspClassLoaderLimit 设置的限制。
<jspAttributes xmi:id="JSPAttribute_2" name="jspClassLoaderExclusionList" value="/test/RappHTML2.jsp,/test/RappHTML4.jsp"/>
jsp.file.extensions
对于带有除了四种标准扩展名(.jsp、.jspx、.jsw 和 .jsv)之外的扩展名的 JSP 文件,使用此参数配置此扩展名。 会将这些扩展名添加到标准扩展名中。
执行此操作的首选方法是在 web.xml中创建 <jsp-property-group> ,并为每个扩展添加 <url-pattern> 标记。
JSP 引擎可以处理用冒号或分号分隔的文件扩展名列表。 例如,.ext1;.ext2:.extn
keepgenerated
指示将保留 JSP 编译器在处理的转换阶段生成的 Java 文件。 此参数的缺省值为 false。 此参数需要重新生成 Java 源。
keepGeneratedclassfiles
指示保留在处理的转换阶段期间由 JSP 编译器生成的类文件。 此参数的缺省值为 true。 此参数需要重新生成 Java 源。
modifyPageContextVariable
在已编译标记文件的转换阶段期间,JSP 容器会隐式地将 pageContext 变量用于 PageContext 对象。 将 pageContext 变量用作标记文件中的隐式变量名称不符合 JSP 规范。 如果在其标记文件中使用本地 pageContext 变量的应用程序发生编译错误,请将 modifyPageContextVariable 属性设置为 true ,以在为标记文件生成的 Java 代码中不使用 pageContext 变量名称。
recompileJspOnRestart
决定在第一次请求文件时应用程序启动之后,是否重新转换和重新编译 JSP 文件。 当 recompileJspOnRestart 为 false 时,除非参数 disableJspRuntimeCompilation 为 true,否则,必要情况下仍会在首次请求 JSP 文件时编译该文件。 此参数的缺省值为 false。
reloadEnabled
确定如果修改了 JSP 文件或它的依赖关系(请参阅 trackDependencies),是否在运行时转换和编译 JSP 文件。
当 reloadEnabled 为 false 时,除非 disableJspRuntimeCompilation 为 true,否则,必要情况下仍会在首次请求 JSP 文件时编译该文件。 此参数的缺省值为 false。
如果未指定此 JSP 引擎参数,那么将使用等效的 Web 容器参数,该参数用于进行 Web 模块类重新装入。 但是,对于其部署描述符位于 Servlet 2.2 级别的应用程序,缺省值为 true。 这样做是为了支持从 WebSphere Application Server V 4.x迁移的应用程序。
reloadInterval
如果启用了重新装入,那么 reloadInterval 将决定查看 JSP 文件是否过时的检查操作之间的时间延迟。
例如,如果 reloadInterval 为 5,那么当前请求 JSP 文件时,只在 JSP 引擎最近一次检查它是否过时的时间已过了五秒,JSP 引擎才会再次执行该检查。 reloadInterval 越大,JSP 引擎需要检查重新装入 JSP 文件的频率越低。 如果未指定此 JSP 引擎参数,那么将使用等效的 Web 容器参数,该参数用于进行 Web 模块类重新装入。 但是,对于其部署描述符位于 Servlet 2.2 级别的应用程序,缺省值为 5 秒。 这样做是为了支持从 WebSphere Application Server V 4.x迁移的应用程序。
reusePropertyGroupConfigOnInclude
scratchdir
指定在其中创建所生成的类文件的目录。
系统属性 com.ibm.websphere.servlet.temp.dir 用于基于服务器范围设置 scratchdir 选项。 JSP 引擎 scratchdir 参数优先于系统属性 com.ibm.websphere.servlet.temp.dir。 此参数的缺省值为 profile_root/temp。 此参数需要重新生成 Java 源。
例如,如果将 JSP 临时目录的位置更改为 profile_home/config/temp,或者将 JSP 临时目录放置在配置临时目录下的 profile_home/config/temp/temp 中,那么将会发生处理错误。
trackDependencies
如果启用重新装入,trackDependencies 确定 JSP 引擎是否跟踪对请求的 JavaServer Pages 文件依赖关系以及 JSP 文件本身所作的修改。
- JSP 文件中静态包含的文件
- JSP 文件中引用的标记文件(不包括 JAR 中的标记文件)
- JSP 文件中引用的 TLD 文件(不包含 JAR 中的 TLD)
useFullPackageNames
如果 useFullPackageNames 为 true,那么 JSP 引擎将使用完整的程序包名来生成和装入 JSP 类。
缺省情况下,在同一个包中生成所有 JSP 类。 (有关更多信息,请参阅“生成的 .java 和 .class 文件的包和目录”主题)。 当 JSP 类在同一个包中时,JSP 引擎的类装入器知道如何将其装入。
在同一个包中生成所有 JSP 类的缺省方法的益处在于,可以生成较小的文件系统路径。 完整包名称可在不使用 JSP 文件属性的情况下,作为 Servlet 在 web.xml 文件中启用预编译 JSP 类文件的配置,从而产生单个类装入器(Web 应用程序的类装入器,用于装入所有此类 JSP 类)。 类似地,当 JSP 引擎的配置属性 useFullPackageNames 和 disableJspRuntimeCompilation 都为 true时,将使用单个类装入器来装入所有 JSP 类,即使在 web.xml 文件中未将 JSP 文件配置为 Servlet 也是如此。
如果 useFullPackageNames 设置为 true,那么批处理编译器将在 Web 模块的 WEB-INF 目录中生成 generated_web.xml 文件。 此文件包含成功转换和编译的每个 JSP 文件的 Servlet 配置信息。 您可以选择将信息复制到 Web 模块 web.xml 文件中,以便 Web 容器能够将 JSP 文件作为 Servlet 装入。 请注意,如果以此方式将 JSP 文件配置为 Servlet,且修改了该 JSP 文件,那么在运行时不会重新装入 JSP 文件。 这是因为该 JSP 文件将视作正规的 Servlet,对它的请求将不通过 JSP 引擎传递。 此参数需要重新生成 Java 源。
useImplicitTagLibs
JSP 引擎隐式地将 tsx 和 jsx 识别为由 JSP 引擎提供的标记库的标记库前缀。 如果将 tsx 或 jsx 用作客户标记库的前缀,那么客户的标记库将覆盖隐式标记库。 但是,JSP 引擎仍高速缓存隐式标记库。 显式地将此参数设置为 false,可告诉引擎不高速缓存隐式标记库并保存资源。 此参数的缺省值为 true。
tsx 标记的缺省 URL 为 http://websphere.ibm.com/tags/tsx。 jsx 标记的缺省 URI 为 http://websphere.ibm.com/tags/jsx。
您可能需要使用除其缺省 URI 外的其他 URI 来定义 tsx 或 jsx 标记库。 此外,也可能需要使用不同的 URI 来定义相同的库前缀。 在这两种情况下,您可以设置 com.ibm.wsspi.jsp.allowtaglibprefixredefinition 定制属性以避免转换错误。 有关更多信息,请参阅有关 JavaServer Pages 定制属性的文档。
useInMemory
指定 JSP 引擎在系统内存中转换和编译 Java 代码。
- 将转换后的 Java 文件写入文件系统
- 从文件系统装入 Java 文件
- 将代码编译成类文件
- 将该类写入文件系统
- 将该类文件装入类装入器。
useJikes
指定是否使用 Jikes 来编译 Java 源。
注: WebSphere Application Server未随附 Jikes。 此参数的缺省值为 false。 此参数需要重新生成 Java 源。
usePageTagPool
启用或禁用基于单个 JavaServer Pages 复用定制标记处理程序。 此参数的缺省值为 false。 此参数需要重新生成 Java 源。
useThreadTagPool
使用线程级别标记处理程序池时,可能会跨各个请求的单个 Web 模块中所有 JSP 页面间的单独发生的定制操作中使用标记处理程序。 此参数的缺省值为 false。 此参数需要重新生成 Java 源。
- 标记处理程序的 release 方法应该复位它的状态和释放其使用的任何专用资源。 JSP 引擎确保在对标记处理程序进行垃圾回收之前调用释放方法。
- 在 doEndTag 方法中,必须重置与此实例相关联的所有实例状态。
详细
指示编译器在编译生成的 Java 源代码时生成详细输出。 将此参数设置为 true 的效果是将 -verbose 选项传递到 Java 编译器。 此参数的缺省值为 false。 此参数需要重新生成 Java 源。
- 标记处理程序的 release 方法应该复位它的状态和释放其使用的任何专用资源。 JSP 引擎确保在对标记处理程序进行垃圾回收之前调用释放方法。
- 在 doEndTag 方法中,必须重置与此实例相关联的所有实例状态。警告:使用页面或线程标记池时,在发生异常的情况下,不会调用 doEndTag 方法,并且如果有必须清除的服务状态,那么应该实现 TryCatchFinally 接口。