小编Gar*_*hes的帖子

如何在打包和部署为WAR的Springboot应用程序中启用异步支持

当我的SpringBoot应用程序从可执行JAR运行时,下面显示的以下REST端点可以按预期工作。即,它将文本“我的测试响应”返回给客户端。但是,当我打包与WAR相同的应用程序并部署到Tomcat(8.0.29)时,它将引发以下异常:

发生意外错误(类型=内部服务器错误,状态= 500)。必须在Servlet上以及对异步请求处理中涉及的所有过滤器启用异步支持。这是通过Java代码使用Servlet API或通过在Web.xml中的Servlet和过滤器声明中添加“ true”来完成的。

package my.rest.controllers;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;

@RestController
@RequestMapping("/api/file")
public class FileContentRestController {

static final int BUFFER = 2048;

@RequestMapping(value = "/content", method = RequestMethod.GET)
@ResponseBody
public StreamingResponseBody getFileContent(HttpServletResponse response) {
    response.setContentType("text/plain");
    response.setCharacterEncoding("UTF-8");

        final InputStream portalFileStream = new ByteArrayInputStream("My test response".getBytes());
        return (OutputStream outputStream) -> {
            int n;
            byte[] buffer = new byte[1024];
            while ((n = portalFileStream.read(buffer)) > -1) {
                outputStream.write(buffer, 0, …
Run Code Online (Sandbox Code Playgroud)

java war servlet-3.0 spring-boot

5
推荐指数
1
解决办法
5482
查看次数

标签 统计

java ×1

servlet-3.0 ×1

spring-boot ×1

war ×1