primefaces 推送在使用 AWS Tomcat7 的 Safari 中不起作用

primefaces push not working in Safari using AWS Tomcat7

我正在使用 PrimeFaces 5.1、JSF 2.1 和 tomcat 7,我的应用程序在 AWS 中。氛围版本 2.2.2.

我无法在 Safari 5.1.7 中使用推送功能。

我们已将 AWS 配置为启用基于 , Websocket with Tomcat 7 on AWS Elastic Beanstalk and Creation of .ebextensions folder in aws elastic beanstalk 的推送。

推送在所有其他浏览器中工作。

我尝试了primepush on Tomcat 7 not working中提供的解决方案,但没有成功。

Safari 控制台显示

感谢任何帮助..

更新 1:一种选择是在检测到 safari 浏览器时尝试使用非安全的 websocket(来自 http://blog.marcon.me/post/24874118286/secure-websockets-safari)。如果是这样,问题是如何让 primefaces 推送到 select 非安全网络套接字?

更新 2:尝试实施 SSL 以查看推送是否由于我们的自签名证书而无法在 Safari 中运行。那似乎也不起作用。

Safari 5.1.7 非常旧...这里 https://github.com/Atmosphere/atmosphere/wiki/Safari-and-WebSockets-Issues 记录了 5.1.5 存在问题。我认为没有从 .5 到 .7 的修复。

此问题是由于 web.xml 缺少配置所致。 在分析 tomcat 的日志 (catalina.out) 时,发现 Safari 尝试连接到 tomcat、ERROR org.atmosphere.cpr.AsynchronousProcessor - Invalid request state. AsyncContext#startAsync not supported.

时出错

在搜索此错误时,从 https://groups.google.com/forum/#!topic/atmosphere-framework/D5-yrW6NzLU

中找到了解决方案

已将 <async-supported>true</async-supported> 添加到 web.xml 中的 shiroFilter 喜欢

 <filter>
        <filter-name>shiroFilter</filter-name>
        <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
        <async-supported>true</async-supported>
 </filter>

使用这个,Safari 5.1.7 能够使用推送功能。

希望这对像它帮助我的其他人有所帮助。