1

我计划开始使用 PrimeFaces 5.0 附带的 PrimeFaces Push。我尝试使用 Wildfly 8.1 运行与此处http://www.primefaces.org/showcase/push/notify.xhtml相同的示例,但我无法从后端 bean 接收任何推送消息。

这是我在 wildfly 控制台上的内容:

01:50:34,926 INFO [org.atmosphere.cpr.AtmosphereFramework] (Thread-261) Atmosphere JavaScript 客户端 2.2.2 的最新版本 01:50:34,926 INFO [org.atmosphere.cpr.AtmosphereFramework] (Thread-261)

Atmosphere 的当前版本 2.2.0-RC3 Atmosphere 的最新版本 2.1.7

01:50:37,447 错误 [org.atmosphere.interceptor.JavaScriptProtocol](默认任务 61)无效的 Atmosphere 版本 2.2.0-javascript 01:50:37,448 WARN [org.atmosphere.websocket.protocol.SimpleHttpProtocol](默认任务- 61) 状态码大于等于 400 Status 501 Message OK 01:50:41,957 INFO [stdout] (default task-62) 发送消息

01:55:37,760 错误 [org.atmosphere.cpr.AsynchronousProcessor](默认任务 63)无法取消资源:8cf3d711-00c2-4e52-9d78-97cd04c0b585:org.primefaces.push.impl 处的 java.lang.NullPointerException。 PushEndpointHandlerProxy.onStateChange(PushEndpointHandlerProxy.java:241) [primefaces-5.0.jar:5.0] at org.atmosphere.cpr.AsynchronousProcessor.invokeAtmosphereHandler(AsynchronousProcessor.java:492) [atmosphere-runtime-2.2.0-RC3.jar:2.2 .0-RC3] 在 org.atmosphere.cpr.AsynchronousProcessor.completeLifecycle(AsynchronousProcessor.java:444) [atmosphere-runtime-2.2.0-RC3.jar:2.2.0-RC3] 在 org.atmosphere.cpr.AsynchronousProcessor。 endRequest(AsynchronousProcessor.java:548) [atmosphere-runtime-2.2.0-RC3.jar:2.2.0-RC3] at org.atmosphere.websocket.DefaultWebSocketProcessor.executeClose(DefaultWebSocketProcessor.java:676)[atmosphere-runtime-2.2.0-RC3.jar:2.2.0-RC3] at org.atmosphere.websocket.DefaultWebSocketProcessor.close(DefaultWebSocketProcessor.java:628)[atmosphere-runtime-2.2.0-RC3.jar :2.2.0-RC3] 在 org.atmosphere.container.JSR356Endpoint.onClose(JSR356Endpoint.java:221) [atmosphere-runtime-2.2.0-RC3.jar:2.2.0-RC3] 在 io.undertow.websockets。 jsr.UndertowSession.close(UndertowSession.java:181) [undertow-websockets-jsr-1.0.15.Final.jar:1.0.15.Final] 在 io.undertow.websockets.jsr.UndertowSession.close(UndertowSession.java: 171) [undertow-websockets-jsr-1.0.15.Final.jar:1.0.15.Final] 在 io.undertow.websockets.jsr.FrameHandler$1.run(FrameHandler.java:93) [undertow-websockets-jsr- 1.0.15.Final.jar:1.0.15.Final] 在 io.undertow.websockets.jsr.ServerWebSocketContainer$1.run(ServerWebSocketContainer.java:303) [undertow-websockets-jsr-1.0.15.Final.jar:1.0.15.Final] 在 io.undertow.websockets.jsr.OrderedExecutor$ExecutorTask.run(OrderedExecutor.java:49) [undertow-websockets-jsr-1.0.15.Final.jar:1.0.15。最终] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_55] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt. jar:1.7.0_55] 在 java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_55]java:745) [rt.jar:1.7.0_55]java:745) [rt.jar:1.7.0_55]

这是我的 PrimeFaces 推送的 web.xml 配置:

   <context-param>
           <param-name>primefaces.PUSH_SERVER_URL</param-name>
           <param-value>http://127.0.0.1:8080</param-value>
   </context-param>

   <servlet>
           <servlet-name>Push Servlet</servlet-name>
           <servlet-class>org.primefaces.push.PushServlet</servlet-class>
           <load-on-startup>0</load-on-startup>
           <async-supported>true</async-supported>
   </servlet>

   <servlet-mapping>
           <servlet-name>Push Servlet</servlet-name>
           <url-pattern>/primepush/*</url-pattern>
   </servlet-mapping>

感谢您为解决此问题提供的帮助。

4

1 回答 1

1

我在使用 Primefaces 5.0 和 Atmosphere Runtime 2.2.0 时遇到了同样的问题。

通过更改为 Atmosphere 2.1.7(根据日志输出仍然是最新版本)解决了这个问题。现在推送消息工作正常......

于 2014-08-09T15:11:33.037 回答