12

我正在使用 MyFaces 在 JSF 中做一些开发工作,我收到了这个警告。

*******************************************************************
*** 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.     ***
*******************************************************************

开发和生产模式有什么区别?是否存在安全风险?仅仅是性能增强吗?

4

1 回答 1

17

没有安全风险,但是有性能影响。当项目阶段设置为开发时,记录的频率会更高,缓存的频率会更低。

关于日志记录,将记录有关如何构建和呈现组件的其他调试信息。例如,如果您有 a <h:inputText>without any parent <h:form>,那么这将被记录并显示为 faces 消息。无论如何,所有未在任何组件中显示的排队面孔消息都<h:message(s)>将显示在页面底部的单独消息列表中,并带有橙色警告字体,表示“未显示”消息。此外,异常处理不同,MyFaces 将代替<error-page>显示丰富的错误页面,包括有关组件树和范围变量的详细信息。

关于缓存,Facelet 缓存会更频繁地刷新。因此,如果您在 Facelet 文件中进行更改并按 F5,则更改将“立即”反映。这不适用于生产阶段,您基本上需要重新启动整个服务器。

此外,jsf.jsJavaScript 文件将显示为未缩小的版本,从而可以更轻松地在 Web 浏览器中进行 JS 调试。在生产阶段,它是缩小版,因此更小,服务更快,但它完全不可读。

Mojarra 有很多类似的行为,除了丰富的错误页面。

于 2012-12-20T00:38:28.193 回答