MyFaces中的开发和生产有什么区别

时间:2012-12-19 20:43:07

标签: jsf jsf-2 myfaces

我正在使用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.     ***
*******************************************************************

开发和生产模式有什么区别?是否存在安全隐患?它只是性能增强吗?

1 个答案:

答案 0 :(得分:16)

没有安全风险,但有性能影响。当项目阶段设置为开发时,将会更频繁地记录并减少缓存。

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

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

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

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