2016-02-16 37 views
0

我写的EAI(外部认证接口)解决方案,提供登录/注销页面的某些应用JSF视图中使用反向代理

当过期的错误

目前,我们有它坐落在两个前一个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. 客户比遇到一个错误,但被重定向到一个空白的登录页面

我们使用OmniFaces FullAjaxExceptionHandler赶上那是在第2步

产生我们还可以通过强制WebSEAL以重定向两个WebSphere服务器之间的流量和模拟情景重现该错误查看过期的错误

这个问题似乎是因为从一个WebSphere服务器的视图状态不与其他WebSphere服务器,这是有道理的

对于我们的目的兼容,我们才真正需要提交的表单信息,以登录用户,视图状态不是必需的从我们这边

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

任何有关这个问题的帮助,将不胜感激。

+0

_“这个问题似乎是因为进行来自一个WebSphere服务器的视图状态与其他WebSphere服务器不兼容,这很有意义“_为什么这有意义?在服务器端保存状态并不使用集群,但为什么在这里? – Kukeltje

+0

@Kukeltje道歉对我来说很有意义,我曾经假定即使在使用客户端状态保存时,视图状态也是特定于单个WebSphere服务器,而不是任何WebSphere服务器中的通用状态。 –

+0

也许你应该为客户端状态保存配置一个明确的加密密钥(或者你是否已经有了?) – Kukeltje

回答

1

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

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

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

在这两个我们强制断线,并在页面视图状态篡改测试用例的标签可以让我们的应用程序中使用的形式参数