HTTP 스트리밍 서블릿을 구현하여 클라이언트에 푸시 알림을 전달합니다. 그 컨테이너에는 Jersey JAX-RS REST 서비스도 있습니다.HTTP 스트리밍 서블릿에서 요청 당 스레드 구현
문제는 두 개의 브라우저 창에서 스트림을 열 때 다른 요청이 완료 될 때까지 기다려야한다는 것입니다.
나는 비슷한 주제 인 Servlet seems to handle multiple concurrent browser requests synchronously을 읽고 두 개의 서로 다른 브라우저에서 스트림을 열어 작동시켰다.
그리고 AsyncContext를 사용하려고 시도했지만 스트림이 아니라 브라우저 탭을 동시에 열고 실행 스레드가 모든 콘텐츠를 브라우저로 전달할 수 있습니다.
또한 두 개의 브라우저 탭에서 샘플 JSP 페이지를 동시에 열려고 시도했지만 비슷한 결과가 나타납니다.
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache">
</HEAD>
<BODY BGCOLOR="blue" TEXT="white">
<%
try {
for (int i=1; i < 100; i++) {
out.print("<h1>"+i+"</h1>");
out.flush();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
out.print("<h1>"+e+"</h1>");
}
}
} catch (Exception e) {
out.print("<h1>"+e+"</h1>");
}
out.print("<h1>DONE</h1>");
%>
</BODY>
</HTML>
서버로 Apache Tomcat 7.0을 사용하고 있습니다. 그러나 다른 서블릿 컨테이너를 사용하는 것은 문제가되지 않습니다.
모든 포인터?
감사합니다.
Thread.sleep()이 전체 Servlet 스레드를 중지하기 때문에 그렇습니까? – JustinKSU