使用反向代理时jsf查看过期错误

时间:2016-02-16 03:01:15

标签: jsf-2 proxy viewexpiredexception webseal

我正在编写一个EAI(外部身份验证接口)解决方案,为某些应用程序提供登录/注销页面

我们目前有一个F5负载均衡器,它位于两个WebSEAL 6.1反向代理之前,然后在WebSphere Application Server 8.0.0.10上运行的两个应用程序之间平衡请求

登录页面是从JSF 2.0.6应用程序提供的,并使用客户端状态保存,以便我们不会有会话超时

页面也使用请求范围的bean尽可能接近无状态,因为我无法使用JSF 2.2来使用真正的无状态标志

我们发现以下情况存在问题,并且正在努力想出一个解决方案

  1. 客户在浏览器中转到登录页面。 WebSEAL将它们发送到其中一个WebSphere服务器
  2. 然后客户提交表单,但WebSEAL将新请求发送到其他WebSphere服务器
  3. 客户遇到错误但被重定向到空白登录页面
  4. 我们正在使用OmniFaces FullAjaxExceptionHandler来捕获在步骤2中生成的View Expired错误

    我们还可以通过强制WebSEAL重定向两个WebSphere服务器之间的流量并模拟场景来重新创建错误

    这个问题似乎是因为来自一个WebSphere服务器的视图状态与其他WebSphere服务器不兼容,这是有意义的

    出于我们的目的,我们只需要提交的表单详细信息以便登录用户,我们这边不需要查看状态

    有没有办法让一个服务器的客户端视图状态兼容或与另一个服务器一起工作?

    对此问题的任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我不确定我是否可以回答我自己的问题,但我确实找到了适合我们的解决方案。

我们使用OmniFaces的enableRestorableView标签在这些情况下损坏/丢失时重建视图。

http://showcase.omnifaces.org/taghandlers/enableRestorableView

在我们的两个强制中断和篡改页面中视图状态的测试用例中,标记允许我们的应用程序使用表单参数继续

相关问题