【问题标题】:JSF no session timeout. What are the drawbacks?JSF 没有会话超时。有什么缺点?
【发布时间】:2011-12-02 17:56:06
【问题描述】:

我在 WAS7.0 上有一个小型 JSF Web 应用程序,只有一个页面,但用户群相当大。

我可以将 all(1) bean 声明为请求范围并使用 javax.faces.STATE_SAVING_METHOD 客户端,而不会在使用非到期会话的服务器上遇到内存问题吗?

这对于更大的应用程序如何工作?

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

编辑:在这一点上,我没有资源来尝试自己测量它,并且会保持应用不变(希望不会惹恼太多用户)。

【问题讨论】:

  • 当然有可能。只需尝试、测试、测量并得出结论。但究竟是什么,你要解决的问题?这个问题在其他方面过于宽泛和修辞。
  • 视图过期的行为在 WAS6.1 和 WAS7 之间发生了变化。如果用户让我的页面保持打开状态(在页面本身上显示单个请求的结果)并在会话过期后尝试提交新请求,他们会得到一个 ViewRestore 异常页面,而不是刷新页面或处理请求。我在网上尝试了几种解决方案,但到目前为止都没有。我在 IBM 开设了 PMR,但通常需要数周时间。
  • 您也可以不时轮询或 ping 您的页面。也许是定期的 ajax 请求,以维持您的会话。
  • 我关心的不是页面过期,而是它对用户可见。我根本不需要保持会话,因为它只是一个请求 + 响应(在同一页面上),但由于 WAS7 中的某种原因,它现在想显示一条烦人的消息。

标签: java websphere-7 jsf-1.2


【解决方案1】:

您不一定需要更改 bean 的范围。只需将 bean 保持在它们所属的范围内。只有当您滥用会话范围的 bean 来保存请求或查看范围数据时,故事才会真正改变。请求或查看范围数据属于请求或视图范围 bean,而不是会话范围 bean。会话范围的 bean 应仅用于保存会话范围的数据,例如登录用户、其站点范围的首选项、选择的语言等。

将状态保存方法从服务器更改为客户端肯定会修复支持会话已过期的视图上的ViewExpiredException。它会减少服务器的内存使用,但会增加服务器的网络带宽使用。但是,如果您已经在使用 GZIP(或者还没有;所以也打开它),那么影响就很小了。

【讨论】:

  • 感谢就像一个魅力。顺便说一句,如果不是因为你在 stackoverflow 和你的博客上的所有答案,我不知道该怎么做:D
猜你喜欢
  • 1970-01-01
  • 2012-12-16
  • 2023-03-09
  • 2012-02-22
  • 1970-01-01
  • 2016-04-26
  • 2012-10-14
  • 2013-03-29
  • 1970-01-01
相关资源
最近更新 更多