Я использую PrimeFaces 5.0 и tomcat 7, и мое приложение находится в AWS. Я пытаюсь использовать PrimeFaces push. Я реализовал образец приложения и работает с моей локальной системой. Если я развожу код на AWS, это не сработает.PrimeFaces push с 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;
}
}
Pushing сообщение:
EventBus eventBus = EventBusFactory.getDefault().eventBus();
eventBus.publish("/service/push", String.valueOf("msg"));
Я получаю сообщение об ошибке,
WebSocket подключение к «WS: //example.com/primepush/service/push X-Atmosphere по отслеживанию Ид = 0 & X-атмосфера-Framework = 2,2. 4-Javascript & Х-атмосфера-Транспорт = WebSocket & Х-атмосфера-TrackMessageSize = истинная & X-атмо-протокол = истина»не удалось: ошибка во время WebSocket квитирования: Неожиданный код ответа: 501
После этой ошибки там другое сообщение об ошибке, которое
Сбой веб-узла. ? Откат к комете и повторной push.js.xhtml п = primefaces & v = 5,1: 1 Не удалось загрузить ресурс: сервер ответил со статусом 501 (не реализовано) http://example.com/primepush/service/push?X-Atmos ... нг & X-атмосфера-TrackMessageSize = истина & X-атмо-протокол = истина & _ = 1422008343786
на осмотре как сообщения об ошибке, я обнаружил, что р: компонент сокета не удается с транспортом, как «WebSocket» и пытаются с «длинным опросом» который не реализован. Поэтому мой вопрос заключается в том, поддерживает ли AWS «WebSocket», если нет, что является обходным путем для этого?
Какая у вас версия атмосферы? – robson
Я использую атмосферу версии 2.2.4 –