Tomcat HttpServletResponse NIO支持

时间:2019-03-19 09:58:30

标签: java tomcat nio

我正在使用Tomcat 8.5(嵌入式Spring Boot)运行我的API服务器。有1个API需要从服务器的文件系统中读取图像文件,然后将其返回。由于该API将被大量使用,因此我想探索提高其性能的方法。我想知道是否可以直接将文件发送给响应而不将其复制到JVM中。 NIO软件包似乎是这里的选择,但是我不确定Tomcat HttpServletResponse是否支持它。

Channels.newChannel(response.getOutputStream())似乎只返回一个包装器。

通常,我不确定以下实现是否在下面使用NIO(直接内核空间复制)还是仅使用传统IO。

        Path path = Paths.get(filePath);
        try (FileChannel fileChannel = FileChannel.open(path);
             ServletOutputStream outputStream = response.getOutputStream()) {

            long size = fileChannel.size();
            int position = 0;
            WritableByteChannel outChannel = Channels.newChannel(outputStream);
            while (position < size) {
                position += fileChannel.transferTo(position, size, outChannel);
            }
        }

1 个答案:

答案 0 :(得分:0)

本文drom DZone可能会帮助您: The Processing of Data