2012-12-19 35 views
10

我正在做一些JSF與MyFaces的開發工作,我得到了這個警告。在MyFaces中開發和生產有何區別

******************************************************************* 
*** WARNING: Apache MyFaces-2 is running in DEVELOPMENT mode. *** 
***           ^^^^^^^^^^^   *** 
*** Do NOT deploy to your live server(s) without changing this. *** 
*** See Application#getProjectStage() for more information.  *** 
******************************************************************* 

開發與生產模式有什麼區別?是否存在安全風險?它只是性能增強?

回答

15

沒有安全風險,但是會有性能影響。當項目階段設置爲開發時,那麼通常會記錄更多,並且緩存更少。

關於日誌記錄,將記錄有關如何構建和呈現組件的附加調試信息。例如,如果您的<h:inputText>沒有任何父母<h:form>,則會將其記錄並顯示爲臉部消息。所有在<h:message(s)>組件中未顯示的排隊面信息都將顯示在頁面底部的單獨消息列表中,並帶有橙色警告字體,指示「未顯示」消息。此外,異常處理不同,MyFaces將代替<error-page>顯示豐富的錯誤頁面,其中包含有關組件樹和範圍變量的詳細信息。

關於緩存,Facelet緩存將更加頻繁地刷新。因此,如果您在Facelet文件中進行更改並按F5,則會立即反映更改。在生產階段這不是真的,你基本上需要重新啓動整個服務器。

此外,jsf.js JavaScript文件將顯示爲未修剪的版本,從而使網頁瀏覽器中的JS調試更容易。在製作階段,它是縮小版本,因此縮小版本的體積更小,速度更快,但是完全無法讀取。

莫哈拉有很多類似的行爲,期望獲得豐富的錯誤頁面。

相關問題