Asynchrone Servlet mit Eingebetteten Jetty

Will ich bauen eine echte einfaches Beispiel für den Aufruf einer asynchronen servlet in einem eingebetteten Jetty-server. Wenn ich versuche zu starten, ein Runnable aus der AsyncContext der Anfrage, bekomme ich eine NullPointerException.
Dies ist der server-code:

public static void main(String[] args) throws Exception {
    Server server = new Server(8080);
    ServletHandler handler = new ServletHandler();
    server.setHandler(handler);
    ServletHolder holder = handler.addServletWithMapping(AsyncServlet.class, "/*");
    holder.setAsyncSupported(true);
    server.start();
    server.join();
}

Dies ist die servlet-code:

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
    final AsyncContext ctxt = req.startAsync();
    ctxt.start(() -> {
        ctxt.complete();
    });
}

- Und dies ist der Fehler mit stack-trace:

java.lang.NullPointerException
at org.eclipse.jetty.server.AsyncContextState$2.run(AsyncContextState.java:168)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:620)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:540)
at java.lang.Thread.run(Thread.java:745) 

Vielleicht der server benötigt keine zusätzliche Konfiguration. Irgendwelche Vorschläge?

Ergänzung: Das gleiche servlet läuft ohne jede änderung in einem eingebetteten tomcat.

  • Welche version von Jetty?
InformationsquelleAutor Gregor | 2014-12-28
Schreibe einen Kommentar