2011-12-02 39 views
1

我有一个小的JSF Web应用程序在WAS7.0只有一个页面,但相当大的用户群。JSF没有会话超时。有什么缺点?

我可以将所有(1)bean声明为请求范围,并且还可以使用javax.faces.STATE_SAVING_METHOD客户端,而不会在服务器上使用非过期会话运行内存问题?

这对大型应用程序会如何工作?

原因:我试图在IBM处理我的PMR时快速解决WAS7.0中的问题。

编辑:在这一点上,我没有资源来尝试和自己衡量它,并将原样离开应用程序(希望不要惹恼太多的用户)。

+0

当然*有可能*。只是尝试,测试,测量和结论。但究竟是什么,你正试图解决的问题?这个问题在其他方面过于宽泛和夸张。 – BalusC

+0

视图到期行为在WAS6.1和WAS7之间发生了变化。如果用户将我的页面打开(显示页面本身的单个请求的结果),并在会话过期后尝试提交新请求,则他们将获得ViewRestore异常页面,而不是刷新页面或处理请求。我在网上尝试了几种解决方案,但目前为止还没有解决方案我已经与IBM开了PMR,但通常需要花费数周时间。 – Stefan

+0

您也可以不时地轮询或ping您的页面。也许定期ajax请求,维护您的会话。 – gorlok

回答

3

您不一定需要更改bean的范围。只要将bean保持在它们所属的范围内即可。只有当您滥用会话范围的bean来保存请求或查看范围内的数据时,故事确实会发生变化。请求或查看作用域数据属于请求或查看作用域bean,而不是会话作用域bean。会话范围的bean应仅用于保存会话范围的数据,例如登录用户,其站点范围首选项,所选语言等。

将状态保存方法从服务器更改为客户端将肯定会修复其后台会话已过期的视图上的ViewExpiredException。它会减少服务器的内存使用量,但会增加服务器的网络带宽使用量。但是如果你已经在使用GZIP(或者还没有使用GZIP,那么也要打开它),那么影响是非常小的。

+0

感谢作品的魅力。顺便说一句,我不知道如何做我的工作,如果不是所有你的答案在stackoverflow和你的博客:D – Stefan

+0

不客气:) – BalusC