Java SSE弹簧MVC返回传输关闭,剩余未完成读取数据

Java SSE弹簧MVC返回传输关闭,剩余未完成读取数据,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一个SpringMVC项目,在其中一个REST控制器中使用SSEEmiter。 代码如下: @RequestMapping(path = "/finite/{count}", method = RequestMethod.GET) public SseEmitter getFiniteMessages(@PathVariable int count){ LOG.info("Request received for finite messages."); final Sse

我有一个SpringMVC项目,在其中一个REST控制器中使用SSEEmiter。 代码如下:

@RequestMapping(path = "/finite/{count}", method = RequestMethod.GET)
  public SseEmitter getFiniteMessages(@PathVariable int count){
    LOG.info("Request received for finite messages.");
    final SseEmitter emitter = new SseEmitter();
    ExecutorService service = Executors.newSingleThreadExecutor();
    service.execute(() -> {
      for (int i = 0; i < count; i++) {
        try {
          emitter.send(LocalTime.now().toString() , MediaType.TEXT_PLAIN);
          Thread.sleep(200);
        } catch (Exception e) {
          LOG.error(e.getMessage());
          emitter.completeWithError(e);
          return;
        }
      }
      emitter.complete();
    });

    return emitter;
  }
我越来越

curl:(18)传输结束,剩余未完成的读取数据

我无法找出问题所在。

我解决了问题。 我在web.xml文件中添加了以下标记

<async-supported>true</async-supported>
true
这允许Servlet存储传入的请求以供以后响应,比如用于发送服务器发送的事件

下面是完整的servlet映射

<servlet>
        <servlet-name>score</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/spring-servlet.xml</param-value>
        </init-param>
    <async-supported>true</async-supported>
    </servlet>

分数
org.springframework.web.servlet.DispatcherServlet
1.
上下文配置位置
/WEB-INF/spring/spring-servlet.xml
真的
<servlet>
        <servlet-name>score</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/spring-servlet.xml</param-value>
        </init-param>
    <async-supported>true</async-supported>
    </servlet>