|
@@ -6,7 +6,6 @@
|
|
|
package io.opentelemetry.smoketest.matrix;
|
|
|
|
|
|
import jakarta.servlet.AsyncContext;
|
|
|
-import jakarta.servlet.ServletException;
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
import java.util.concurrent.BlockingQueue;
|
|
@@ -14,13 +13,15 @@ import java.util.concurrent.ExecutorService;
|
|
|
import java.util.concurrent.Executors;
|
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
|
|
|
|
+@SuppressWarnings("SystemOut")
|
|
|
public class AsyncGreetingServlet extends GreetingServlet {
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
private static final BlockingQueue<AsyncContext> jobQueue = new LinkedBlockingQueue<>();
|
|
|
private static final ExecutorService executor = Executors.newFixedThreadPool(2);
|
|
|
|
|
|
@Override
|
|
|
- public void init() throws ServletException {
|
|
|
+ public void init() {
|
|
|
+ System.err.println("init AsyncGreetingServlet");
|
|
|
executor.submit(
|
|
|
new Runnable() {
|
|
|
@Override
|
|
@@ -28,6 +29,7 @@ public class AsyncGreetingServlet extends GreetingServlet {
|
|
|
try {
|
|
|
while (true) {
|
|
|
AsyncContext ac = jobQueue.take();
|
|
|
+ System.err.println("got async request from queue");
|
|
|
executor.submit(() -> handleRequest(ac));
|
|
|
}
|
|
|
} catch (InterruptedException e) {
|
|
@@ -39,16 +41,21 @@ public class AsyncGreetingServlet extends GreetingServlet {
|
|
|
|
|
|
@Override
|
|
|
public void destroy() {
|
|
|
+ System.err.println("destroy AsyncGreetingServlet");
|
|
|
executor.shutdownNow();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
|
|
|
+ System.err.println("start async request");
|
|
|
AsyncContext ac = req.startAsync(req, resp);
|
|
|
+ System.err.println("add async request to queue");
|
|
|
jobQueue.add(ac);
|
|
|
+ System.err.println("async request added to queue");
|
|
|
}
|
|
|
|
|
|
private static void handleRequest(AsyncContext ac) {
|
|
|
+ System.err.println("dispatch async request");
|
|
|
ac.dispatch("/greeting");
|
|
|
}
|
|
|
}
|