這個方法是到目前為止進行JSP預編譯最方便的途徑(flickaswitch 途徑)他有許多指出來毫無意義的缺點如果一個錯誤在JSP的編譯期間或在部署(或重新部署) 的時候發生Web 應用程序的預編譯將會在例外處暫停另外如果在一個特定的Web應用程序裡面有許多JSP文件的情況declarative預編譯顯著的影響著部署時間阻斷部署直到所有的文件都被編譯對於大型的應用程序當出現數以百計的JSP 文件以declarative預編譯被執行的時候這種部署時間趨向以分鐘來計算 (在某些情況到分鐘其他情況可能更長時間)設想開始一個服務器實例在一個特定的Web應用程序周期內進入部署狀態用declarative 預編譯激活如果在應用內有很多的JSP文件以及部署接近完成時就已經花費了大量的時間在編譯期間由於拋出一個例外而突然失敗當然會引起挫折感雖然起先看起來比較方便但declarative 編譯對生產系統管理造成重大的風險因此應該在經過慎重的考慮後再使用它
程序方式的預編譯
在WLS下最可靠的預編譯JSP的方法是使用Java命令行weblogicjspc它位於WLS安裝的lib目錄之下的weblogicjar文件中這個工具允許開發者在發展階段和在部署前解決編譯時間問題的時候編譯需要的JSP文件它也為生產系統提供一個有能力實現JSP預編譯的管理員這種用法的主要好處是
● 文件可以被預編譯一次然後可以被多次部署(這不被服務器實例的重復利用所影響)
● 編譯時的例外可以被預先解決而不影響部署
● 類可以通過集群部署
使用weblogicjspc的缺點是需要人工干涉並且它在開發時並當在JSP文件變得過時的時候必須被重新運行然而考慮到前面的兩個方法的討論我們幾乎不能將這種不方便當成該方法的一個缺點因此推薦它作為最可靠和最靈活的機制來實現JSP預編譯
執行weblogicjspc
為了更有效的使用weblogicjspc你必須首先了解它的用法和語法這篇文章我們將利用WLS SP的工具的功能注意下面給出的語法和最好的慣例應該應用於WLS 的所有版本以及新的WLS
為了調用命令行JSP編譯器(weblogicjspc)你必須確定下面的內容
● PATH環境變量必須包含你機器上安裝的JSE包的二進制目錄(例如/opt/jse//sdk/bin 或者c:sunsoftjsesdkin)以獲得JVM運行時的支持如果你打算使用javac作為你的JSP編譯的Java編譯器要確定PATH包含全部Java 的軟件開發工具包(SDK)的二進制目錄並且不僅僅是JRE(Java Runtime EngineJava運行時間引擎)因為沒有編譯器和JRE關聯 如果你打算使用一個編譯器而不是javac(例如 Jikes)也要為那個編譯器確定在PATH中包含正確的目錄
● 設置Java系統類路徑用來包含來自WLS SP 安裝目錄的weblogicjar文件通過在產品庫目錄下默認建立(例如/opt/bea/wlserver/lib/weblogicjar或者c:eawlserv erlibweblogicjar)此外請確定在JSP編譯階段中你可能需要的參考類(JAR或類文件)也在你的類路徑中
在第一次執行weblogicjspc之前你需要測試你的命令行配置是否是按上述配置它可以通過簡單運行一個WLS版本檢查來完成使用命令java weblogicversion這個命令應該返回下面的內容
which should return the following:
WebLogic Server SP // ::
#
WebLogic XML Module SP //
:: #
如果你的輸出和上面的不相似(和你運行的版本相對應)在進行JSP預編譯前要重新訪問PATH和類路徑變量將其設置成你的當前命令行環境
一般的weblogicjspc的語法如下面給出的
java weblogicjspc [options] …
在一個編譯器的單一調用中默認情況下JSP編譯器可以編譯一個JSP文件或一組JSP文件並且可以通過設置命令行選項編譯器可以以不同的方法工作下面給出一個例子
java
weblogicjspc
webapp mywebapp
compiler javac
compileFlags g
classpath /u/apps/dist/src/libjar
d
package comslackwerksmywebappjsp
commentary
keepgenerated
k
mywebappindexjsp
這篇文章只列舉了一個例子如果你要想更加了解weblogicjspc如何能在你的環境中使用和管理的話請參閱/wldj我們提供了對整套的工作選項使用的含義以及相關聯問題的討論
結論
雖然關於JSP預編譯的問題較多但許多的途徑可以解決然而考慮到上文所說的那些優點和缺點應該較容易的看出經由weblogicjspc預編譯的程序方式是為克服JSP固有的缺點的一個靈活的選項在開發階段的早期熟悉該工具將改善生產期間應用程序的管理和性能狀況
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25749.html