【问题标题】:How to enable SSE in Meecrowave?如何在 Meecrowave 中启用 SSE?
【发布时间】:2018-12-02 13:28:41
【问题描述】:

如何在 Meecrowave (1.2.4) 中启用 SSE?

我为 org.apache.cxf:cxf-rt-rs-sse:3.2.7 添加了依赖项,但我在资源方法中得到了 NPE:

java.lang.NullPointerException: null
at org.apache.cxf.jaxrs.impl.AsyncResponseImpl.initContinuation(AsyncResponseImpl.java:306) ~[cxf-rt-frontend-jaxrs-3.2.7.jar:3.2.7]
at org.apache.cxf.jaxrs.impl.AsyncResponseImpl.<init>(AsyncResponseImpl.java:68) ~[cxf-rt-frontend-jaxrs-3.2.7.jar:3.2.7]
at org.apache.cxf.jaxrs.sse.SseEventSinkContextProvider.createContext(SseEventSinkContextProvider.java:47) ~[cxf-rt-rs-sse-3.2.7.jar:3.2.7]
at org.apache.cxf.jaxrs.sse.SseEventSinkContextProvider.createContext(SseEventSinkContextProvider.java:35) ~[cxf-rt-rs-sse-3.2.7.jar:3.2.7]
at org.apache.cxf.jaxrs.utils.JAXRSUtils.createContextValue(JAXRSUtils.java:1146) ~[cxf-rt-frontend-jaxrs-3.2.7.jar:3.2.7]
at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:874) ~[cxf-rt-frontend-jaxrs-3.2.7.jar:3.2.7]
at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:808) [cxf-rt-frontend-jaxrs-3.2.7.jar:3.2.7]
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:214) [cxf-rt-frontend-jaxrs-3.2.7.jar:3.2.7]
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:78) [cxf-rt-frontend-jaxrs-3.2.7.jar:3.2.7]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) [cxf-core-3.2.7.jar:3.2.7]
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-core-3.2.7.jar:3.2.7]
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267) [cxf-rt-transports-http-3.2.7.jar:3.2.7]
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) [cxf-rt-transports-http-3.2.7.jar:3.2.7]
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) [cxf-rt-transports-http-3.2.7.jar:3.2.7]
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) [cxf-rt-transports-http-3.2.7.jar:3.2.7]
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:216) [cxf-rt-transports-http-3.2.7.jar:3.2.7]
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301) [cxf-rt-transports-http-3.2.7.jar:3.2.7]
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:225) [cxf-rt-transports-http-3.2.7.jar:3.2.7]

我在 Meecrowave 中找到了关于 SSE 的旧帖子:

http://mail-archives.apache.org/mod_mbox/openwebbeans-user/201802.mbox/%3C147540348.1079544.1517463170730%40mail.yahoo.com%3E

但现在似乎不相关了,因为 SSE 在 CXF 3.2.5 中进行了重构:

http://cxf.apache.org/docs/sse.html

【问题讨论】:

  • 你能分享一个可以用来重现错误的测试用例吗?

标签: jax-rs cxf cdi server-sent-events


【解决方案1】:

我发现有没有 asyncSupported=true 的 ServletFilter。在我将 Filter 上的 asyncSupported 设置为 true 后,它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2010-12-01
    • 2021-07-11
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多