【发布时间】:2015-02-25 02:38:23
【问题描述】:
我想构建一个真正简单的示例,用于在嵌入式 Jetty 服务器中调用异步 servlet。当我尝试从请求的 AsyncContext 启动 Runnable 时,我得到一个 NullPointerException。 这是服务器代码:
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();
}
这是servlet代码:
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
final AsyncContext ctxt = req.startAsync();
ctxt.start(() -> {
ctxt.complete();
});
}
这是堆栈跟踪的错误:
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)
也许服务器需要任何额外的配置。有什么建议吗?
补充:同一个 servlet 在嵌入式 tomcat 中运行时没有任何变化。
【问题讨论】:
-
什么版本的 Jetty?
标签: servlets asynchronous jetty embedded-jetty