JSF“错误 Mac 未验证!” [复制]

2024-04-24

我一直在尝试使用 jsf 中的 primefaces 实现一些基本的推送功能。我用过那里的反例http://www.primefaces.org/showcase-labs/push/counter.jsf http://www.primefaces.org/showcase-labs/push/counter.jsf。本质上它是一个增加共享计数器的按钮。运行此示例时,我总是收到此错误:

ERROR: MAC did not verify!

我的理解是,每个会话都会生成一个 mac,然后检查每条传入消息以验证源是否未更改(我认为)。我一直无法找到此问题的原因,并查看了其他线程,例如:

错误:MAC 未验证! PrimeFaces https://stackoverflow.com/questions/19521087/error-mac-did-not-verify-primefaces

JSF:Mojarra 2.1 到 2.2 迁移导致 ViewExpiredException https://stackoverflow.com/questions/19706327/jsf-mojarra-2-1-to-2-2-migration-causing-viewexpiredexception

不幸的是这些并没有解决我的问题。两者似乎都是由我没有得到的 ViewExpiredException 引起的。我发现阻止它的唯一方法是在 web.xml 中将状态保存方法从客户端更改为服务器:

<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>

但是,执行此操作时,计数器不再共享,而是显示为每个用户,这不是我想要的。我的最终目标是实现一个聊天室,它的大部分内容都在那里,但现在它使用短轮询,可扩展性不太好。看过primefaces推送后,我认为它是理想的,但一直在努力使用它。

我尝试过多个 Web 服务器(Tomcat、Jetty 和 Glassfish),并尝试使用不同版本的 JSF (Mojarra) 和 primefaces 版本(3.4 和 4.0)。我已经在多个浏览器和多台计算机上对其进行了测试。有时我可以在出现错误之前将计数器增加几次,有时它会立即发生。我没有遇到任何异常或服务器错误,并且一切都可以编译。我还想提一下,我之前在其他项目上也遇到过这个错误,但在重新启动服务器后它就消失了。当使用 primefaces Push 时,总会发生这种情况。任何帮助将不胜感激。

EDIT

当将状态保存到 web.xml 中的服务器以避免 MAC 错误时,我注意到共享计数器在同一台计算机上以每个浏览器为基础工作。这意味着如果我有多个选项卡或窗口,则一次更新所有选项卡或窗口即可更新计数器。但它不能跨浏览器工作,firefox 中计数器的更改不会反映在 chrome 或 IE 中,反之亦然。如果在两台独立的计算机上,它也不会反映出来。我不知道这是否有帮助,但我想我会提一下。

EDIT

在注意到示例中的 bean 是会话范围后,我将其更改为应用程序范围。当然,会话范围意味着每个浏览器都有自己的副本。现在,这些更改已反映在浏览器和计算机上。回到我原来的问题,我仍然想知道为什么将保存状态更改为服务器可以修复 MAC 错误,这意味着什么?我假设服务器现在必须维护每个会话的视图状态而不是客户端,可扩展性较低/客户端-服务器流量较多?根据我所读到的内容,如果将保存状态设置为服务器,则无法检查视图过期异常或阻止用户创建视图(如果用户已经拥有太多视图),这是正确的吗?


看来您的应用程序存在依赖性问题 ViewExpiredException 可以轻松处理,这是没有问题的处理 ViewExpiredException https://weblogs.java.net/blog/edburns/archive/2009/09/03/dealing-gracefully-viewexpiredexception-jsf2

完整配置的 JSF 项目示例JSF2.2前端 https://github.com/armdev/jsf-frontend

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSF“错误 Mac 未验证!” [复制] 的相关文章

随机推荐

  • yaml.parser.ParserError:解析块映射时

    ERROR yaml parser ParserError while parsing a block mapping in tmp statelesscs compose yml line 1 column 1 expected
  • github 存储库的本地缓存?

    我们使用 github 来管理我们的大量软件环境 我敢打赌 像许多其他组织一样 该存储库的绝大多数流量来自我们的办公室 考虑到这一点 有没有一种方法可以构建给定 github 存储库的本地缓存 但仍然具有云版本的保护 我在缓存代理服务器的模
  • 设置 stats_flutter 时间序列图表中时间标签的格式以包含 hh:mm:ss

    是否可以格式化charts flutter时间序列图表的x轴上的标签以进行显示hh mm ss 这个答案 https stackoverflow com a 51138909 1954993解释了如何格式化代码以显示月份和日期 但我需要显示
  • 快速加速平均值和标准差

    我正在研究 Accelerate 以计算 Swift 中数组的平均值和标准差 我可以做到这一点 如何计算标准差 let rr Double 18 0 21 0 41 0 42 0 48 0 50 0 55 0 90 0 var mn Dou
  • 除了不可变值对象之外,什么时候应该重写 equals() ?

    很明显equals 而且当然hashCode 在处理不可变值对象时很有价值 映射键 需要在包含它们的对象之间进行比较的强类型字段值等 但除了值对象之外 您有多少可能真正拥有两个独立构造的实例并希望它们成为equal 我很难想象一个现实的场景
  • 我可以使用在 DispatcherServlet Context 中声明的 Hibernate Session Factory 而不是 hibernate.cfg.xml 吗?

    在我之前的 Spring MVC 项目中 我使用 Hibernate 作为 JPA 的提供者 我不必创建hibernate cfg xml文件 因为我已经在 Spring DispatcherServlet 上下文文件中声明了 Hibern
  • 为什么 JSON 应该有一个 status 属性

    我偶然发现了一种相当普遍的做法 我什至找到了一个为其命名的网页 但我忘记了名称 并且无法再在谷歌上找到该页面 实践中 来自 REST 服务的每个 JSON 响应都应具有以下结构 status ok data 或者在错误情况下 status
  • DirectX 11 ClearRenderTargetView 恢复透明缓冲区?

    我正在尝试创建一个使用 directx 进行绘制的窗口opaque上面的内容透明的视图 即桌面显示出来 使用 DirectX11 我尝试执行以下操作 但它并没有使背景透明 事实上 我输入的任何不透明度值都会给出完全相同的结果 我在做什么 f
  • Java ConcurrentHashMap 集合的模式

    我在多线程应用程序中常用的数据结构是 ConcurrentHashMap 我想在其中保存一组共享相同键的项目 安装特定键值的第一个项目时会出现此问题 我一直使用的模式是 final ConcurrentMap
  • Flowtype - 字符串与字符串枚举不兼容

    我有一个来自选择输入且类型为字符串的值 但是我想将其传递到函数中 更新语言 接收带有类型别名 Language 我面临的问题是 Flow 只允许我打电话更新语言如果我明确地将我的字符串值与枚举字符串进行比较 并且我想使用像 array in
  • C#:使用指针类型作为字段?

    在 C 中 可以声明具有指针类型成员的结构 或类 如下所示 unsafe struct Node public Node NextNode 它是否安全 呃 暂时忽略那个具有讽刺意味的小unsafe标志 使用这个结构 我的意思是在堆上长期存储
  • 使用 VSCode 在 Python 中调试期间读取输入

    这是我在 vs code 中使用的 python 扩展 python 扩展 https marketplace visualstudio com items itemName donjayamanne python 当我使用扩展提供的调试功
  • python 中数据库连接池的最佳解决方案是什么?

    我开发了一些类似于 DAO 的自定义类来满足我的项目的一些非常特殊的要求 该项目是一个不在任何类型的框架内运行的服务器端进程 该解决方案效果很好 只是每次发出新请求时 我都会通过 MySQLdb connect 打开一个新连接 将其切换为使
  • 当我提出自己的异常作为响应时,如何更轻松地抑制以前的异常?

    Consider try import someProprietaryModule except ImportError raise ImportError It appears that
  • 西格网络速度

    这个库对于获取 cpu ram 和其他人员来说非常棒 但是 我不知道如何获得网络速度 这意味着 在一段时间内发送和接收了多少数据 有办法给我这些数据吗 这可能是我正在寻找的东西吗 Tcp stat sigar getTcp stat get
  • Windows 和 OS X 之间 build.gradle 中的相对路径不同

    我的项目有一个包含密钥库文件 file keystore 的文件夹 这是结构 gradle 2 2 taskArtifacts idea copyright libraries app build generated libs src an
  • 如何使视频资源兼容视网膜显示?

    我有一个应用程序 可以在播放 2 秒的电影时加载 目前 该应用程序已在商店上架 并且除此视频外 所有静态内容均符合视网膜显示标准 我有一个用于视网膜显示屏的 960x640 mp4 h 264 编码视频 它在 iPhone 是的 高分辨率
  • 深层链接不起作用 - 离子

    我正在使用 Deeplinks 和 ionic 3 但我创建的 url 不起作用 这是网址 https lucky com prd rm74fEgBB2frzhagYcov https lucky com prd rm74fEgBB2frz
  • 为什么函数(Python)的 __code__ 是可变的

    在昨天的上一个问题中 在评论中 我开始知道在 python 中 code 函数的属性是可变的 因此我可以编写如下代码 def foo print Hello def foo2 print Hello 2 foo foo code foo2
  • JSF“错误 Mac 未验证!” [复制]

    这个问题在这里已经有答案了 我一直在尝试使用 jsf 中的 primefaces 实现一些基本的推送功能 我用过那里的反例http www primefaces org showcase labs push counter jsf http