Я пишу веб-приложение, которое отправляет несколько простых файлов в ответ на некоторые запросы.Я хочу справиться с этим в Java, а не в nginx и др.В стандартном сервлете единственный вариант - использовать java.io.OutputStream
из HttpServletResponse
.
File file = ...
response.setContentLength((int)file.length());
FileInputStream in = new FileInputStream(file);
IOUtils.copy(in, response.getOutputStream());
. Копирует байтовые буферы больше, чем необходимо.Я хотел бы посмотреть, смогу ли я улучшить производительность, используя буферы и каналы NIO.Я знаю, что Jetty использует NIO под капотом, потому что «разъем» на моем сервере имеет класс org.eclipse.jetty.server.nio.SelectChannelConnector .
Есть ли способ получить доступ к базовым каналам из сервлета?Или есть способ определить специфичный для Jetty обработчик, который использует java.nio
вместо java.io
?
В их документах показан Jetty "hello world" обработчик , но это такжеиспользуя потоки HttpServletResponse
и java.io
.