JSP 引擎配置參數
在 WebSphere® Application Server中,您可以配置 Java™Server Pages (JSP) 引擎配置參數,以在正式作業伺服器環境中取得最佳效能,以及在開發環境中滿足開發人員的需求。
JSP 引擎參數區分大小寫。 如果指定給參數的值是由兩個以上以空格區隔的單字所組成,則您必須以引號括住該值。 部分參數會影響針對 JSP 或標籤檔產生的 Java 程式碼。 下列陳述式會識別這些參數: 此參數需要重新產生 Java 來源。
此陳述式指出如果修改配置參數,則在重新轉換 JSP 檔並重新編譯 Java 來源之前,參數的值不會變更任何內容。
allowMultipleAttributeValues
指定 JSP 儲存器是否可以儲存自訂標籤屬性的多個值。 將這個參數設為 true ,可讓 JSP 儲存器儲存多個值。 此參數的預設值為 false。 此參數需要重新產生 Java 來源。
compileWith主張
指定產生的 Java 類別是否應包含 Developer Kit Java Technology Edition 1.4 主張機能的支援。 將此參數設為 true 的效果是將 -source 1.4 選項傳遞至 Java 編譯器。 此參數的預設值為 false。 此參數需要重新產生 Java 來源。
classdebuginfo
指定編譯器是否在產生的類別檔中包含除錯資訊。 當您將這個參數設為 true時,會將 -g 選項傳遞給 Java 編譯器。 此參數的預設值為 false。 此參數需要重新產生 Java 來源。
convertAttrValueTo字串
指定在使用之前是否將重複標籤的開始及結束屬性轉換為字串。 此參數的預設值為 false。 此參數需要重新產生 Java 來源。
淘汰
指定編譯器在編譯產生的 Java 程式檔時是否產生淘汰警告。 當您將這個參數設為 true 時,會將 -deprecation 選項傳遞給 Java 編譯器。 此參數的預設值為 false。 此參數需要重新產生 Java 來源。
disableEl快取
如果您因為雜湊對映由表示式評估器保留而遭遇記憶體不足狀況,請將此參數設為 true 以停用 commons-el 表示式快取。 此參數的預設值為 false。
disableJspRuntimeCompilation
如果這個選項設為 true,在執行時期, JSP 引擎不會轉換及編譯 JSP 檔; JSP 引擎只會載入經過前置編譯的類別檔。 JSP 原始檔不需要出現,就可以載入類別檔。 當這個選項設為 true 時,您可以安裝不含 JSP 程式碼的應用程式,但應用程式必須有經過前置編譯的類別檔。 使用同名的 Web 儲存器自訂內容來決定伺服器中所安裝之所有 Web 模組的行為。 如果同時設定 Web 儲存器自訂內容和 JSP 引擎選項,則 JSP 引擎選項優先。 此參數的預設值為 false。
disableTld搜尋
將這個選項設為 true ,可在應用程式啟動時,防止 JSP 引擎在應用程式安裝目錄中搜尋 taglib 描述子 (TLD) 檔案。 如果這個選項設為 false,當應用程式啟動時, JSP 引擎會在應用程式安裝目錄中搜尋 TLD 檔。 此參數的預設值為 false。
Web 儲存器自訂內容 com.ibm.wsspi.jsp.disableTldSearch可用來指定當應用程式啟動時,伺服器中所安裝之所有 Web 模組中的 JSP 引擎是否不會在應用程式安裝目錄中搜尋 TLD 檔。 如果針對 Web 儲存器自訂內容和 JSP 引擎選項設定了衝突的值,則 JSP 引擎選項的設定優先。
evalQuotedAndEscaped表示式
將此選項設為 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/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 屬性作為 ibm-web-ext.xmi 或 ibm-web-ext.xml 檔的 JSP 屬性。 這個屬性的值是一份以逗點定界的目錄清單,作為 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 副檔名。
ieClassID
指出 Internet Explorer 的 Java 外掛程式 COM 類別 ID。
<jsp:plugin> 標籤會使用此值。 預設 classid 為 clsid:8AD9C840-044E-11D1-B3E9-00805F499D93
javaEncoding
指定在產生 .java 檔案時,以及由 Java 編譯器編譯時所使用的編碼。 當 JSP 頁面的頁面編碼與 UTF-8 不相容時,請設定此參數。 當設定 javaEncoding 時,編碼會透過 -encoding 引數傳遞給 Java 編譯器。 請注意 Jikes 不支援編碼。 預設值為 UTF-8。 此參數需要重新產生 Java 來源。
jdkSourceLevel
這個 JSP 引擎參數是在 WebSphere Application Server 6.1版中引進。 雖然 compileWithAssert 仍在 6.1版中運作,但請使用此參數而非 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"/>
jspClassLoaderExclusion清單
當 jspClassLoaderLimit 指定要在記憶體中保留載入的 JSPExtensionClassLoader物件數時,這個以逗點區隔的 JSP 值清單會指出不論 jspClassLoaderLimit所設定的限制為何,都不會卸載哪些 JSP。
<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 檔時仍會編譯 JSP 檔。 此參數的預設值為 false。
reloadEnabled
決定如果修改 JSP 檔或其相依關係 (請參閱 trackDependencies) ,是否在執行時期轉換及編譯 JSP 檔。
如果 reloadEnabled 為 false ,除非 disableJspRuntimeCompilation 參數為 true ,否則仍會在第一個要求中編譯 JSP 檔 (必要的話)。 此參數的預設值為 false。
如果未指定這個 JSP 引擎參數,則會使用 Web 模組類別重新載入的對等 Web 儲存器參數。 不過,對於部署描述子是 Servlet 2.2 層次的應用程式,預設值是 true。 這是為了支援從 WebSphere Application Server 4.x版移轉的應用程式。
reloadInterval
如果啟用重新載入, reloadInterval 會決定檢查之間的延遲,以查看 JSP 檔是否過期。
比方說,如果 reloadInterval 是 5 , JSP 引擎只會在 JSP 檔現行要求之前 5 秒以上完成最後一項這類檢查時,才會檢查 JSP 檔是否過期。 reloadInterval越大, JSP 引擎檢查是否需要重新載入 JSP 檔的頻率越低。 如果未指定這個 JSP 引擎參數,則會使用 Web 模組類別重新載入的對等 Web 儲存器參數。 不過,對於部署描述子是 Servlet 2.2 層次的應用程式,預設值是 5 秒。 這是為了支援從 WebSphere Application Server 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 類別的預設方法具有產生較小檔案系統路徑的好處。 完整套件名稱的好處是能夠在 web.xml 檔中將經過前置編譯的 JSP 類別檔配置成 Servlet ,而不使用 jsp-file 屬性,從而產生單一類別載入器 (Web 應用程式的類別載入器) ,用來載入所有這類 JSP 類別。 同樣地,當 JSP 引擎的配置屬性 useFullPackageNames 和 disableJspRuntimeCompilation 都是 true時,即使 JSP 檔未在 web.xml 檔中配置成 Servlet ,也會使用單一類別載入器來載入所有 JSP 類別。
當 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 程式檔。
附註: Jikes 未隨附於 WebSphere Application Server。 此參數的預設值為 false。 此參數需要重新產生 Java 來源。
usePageTagPool
在個別 JavaServer 頁面上啟用或停用重複使用自訂標籤處理程式。 此參數的預設值為 false。 此參數需要重新產生 Java 來源。
useThreadTagPool
當使用執行緒層次標籤處理程式儲存區時,標籤處理程式可以在單一 Web 模組中的所有 JSP 頁面中個別出現的自訂動作之間,在個別要求之間重複使用。 此參數的預設值為 false。 此參數需要重新產生 Java 來源。
- 標籤處理程式的釋放方法應該重設其狀態,並釋放它所使用的任何專用資源。 JSP 引擎可確保在對標籤處理程式進行記憶體回收之前,先呼叫 release 方法。
- 在 doEnd標籤方法中,必須重設與此實例相關聯的所有實例狀態。
詳細
指出編譯器在編譯產生的 Java 原始碼時產生詳細輸出。 將此參數設為 true 的效果是將 -verbose 選項傳遞至 Java 編譯器。 此參數的預設值為 false。 此參數需要重新產生 Java 來源。
- 標籤處理程式的釋放方法應該重設其狀態,並釋放它所使用的任何專用資源。 JSP 引擎可確保在對標籤處理程式進行記憶體回收之前,先呼叫 release 方法。
- 在 doEnd標籤方法中,必須重設與此實例相關聯的所有實例狀態。警告:使用頁面或執行緒標籤儲存區時,如果發生異常狀況,則不會呼叫 doEnd標籤方法,如果有必須清除的服務狀態,則應該實作 TryCatchFinally 介面。