各着信要求の応答を送信する必要があるマルチスレッド Java サーブレットを実装しようとしています。以下は私のコードです。
public class RequestController extends HttpServlet {
private ExecutorService pool;
@Override
public void init() {
final int NTHREADS = 100;
pool = Executors.newFixedThreadPool(NTHREADS);
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {
BufferedReader br = request.getReader();
String msg = br.readLine(), temp;
while ((temp = br.readLine()) != null) {
msg += temp;
}
br.close();
if (msg == null) {
msg = request.getParameter("request");
if (msg == null) {
System.out.println("Invalid request");
return;
}
}
System.out.print("Request received: ");
System.out.println(msg);
pool.submit(new HandleRequest());
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
今問題は、各リクエストの応答を送信することです.. HttpServletResponse 応答オブジェクトを渡すことでこれを解決しようとしました
pool.submit(new HandleRequest(response));
ただし、これは最後の要求に対してのみ応答を送信します。正しく行う方法は?助けてください。