package org.springframework.issues.web; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import java.nio.file.Files; import javax.servlet.AsyncContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.ApplicationContext; import org.springframework.core.io.Resource; public class AsyncServlet extends HttpServlet { private ApplicationContext applicationContext; public AsyncServlet(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { AsyncContext async = request.startAsync(); String info=request.getPathInfo(); Resource resource = applicationContext.getResource("classpath:/spring-logo.png"); response.setContentLengthLong(resource.contentLength()); response.setHeader("Content-Type","image/png"); InputStream is = Files.newInputStream(resource.getFile().toPath()); ServletOutputStream out = response.getOutputStream(); out.setWriteListener(new StandardDataStream(is, async, out)); /* else { byte[] bytes = "Hello World!".getBytes(Charset.forName("UTF-8")); ServletOutputStream out = response.getOutputStream(); for(int i=0; i<4096; i++) { out.write(bytes); } async.complete(); } */ } }