【发布时间】:2015-03-22 10:28:54
【问题描述】:
我正在使用 PrimeFaces 5.0 和 tomcat 7,并且我的应用程序位于 AWS 中。 我正在尝试使用 PrimeFaces 推送。我已经实现了一个示例应用程序,它正在与我的本地系统一起使用。如果我将代码部署到 AWS,它会失败。
Xhtml 代码
<p:socket onMessage="jsFunctionToCall" channel="/service/push"/>
Web.xml
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>org.atmosphere.cpr.AtmosphereInterceptor</param-name>
<param-value>org.atmosphere.interceptor.ShiroInterceptor</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Push Servlet</servlet-name>
<servlet-class>org.primefaces.push.PushServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>Push Servlet</servlet-name>
<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
Java 代码
@PushEndpoint("/service/push")
public class ServicePushResource {
@OnMessage(encoders = {JSONEncoder.class})
public String onMessage(String count) {
return count;
}
}
推送消息:
EventBus eventBus = EventBusFactory.getDefault().eventBus();
eventBus.publish("/service/push", String.valueOf("msg"));
我收到错误消息
WebSocket 连接到 'ws://example.com/primepush/service/push?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.2.4-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize =true&X-atmo-protocol=true' 失败:WebSocket 握手期间出错:意外响应代码:501
在这个错误之后有另一个错误消息
Websocket 失败。降级到 Comet 并重新发送 push.js.xhtml?ln=primefaces&v=5.1:1 加载资源失败:服务器响应状态为 501(未实现)http://example.com/primepush/service/push?X-Atmos...ng&X-Atmosphere-TrackMessageSize=true&X-atmo-protocol=true&_=1422008343786
在检查这两个错误消息时,我发现 p:socket 组件在传输为“WebSocket”时失败,它正在尝试使用未实现的“长轮询”。所以我的问题是 AWS 是否支持“WebSocket”,如果不是,那么解决方法是什么?
【问题讨论】:
-
你有什么版本的氛围?
-
我用的是大气2.2.4版
标签: amazon-web-services primefaces tomcat7 atmosphere amazon-elb