Java SSE弹簧MVC返回传输关闭,剩余未完成读取数据
我有一个SpringMVC项目,在其中一个REST控制器中使用SSEEmiter。 代码如下: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
@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>