【问题标题】:Embedding Jetty 9 using ServletContext使用 ServletContext 嵌入 Jetty 9
【发布时间】:2014-03-25 02:03:33
【问题描述】:

我正在尝试使用此处的示例从 Jetty 7 升级到 Jetty 9:

http://www.eclipse.org/jetty/documentation/current/embedding-jetty.html#d0e18177

Server server = new Server(8080);
ServletContextHandler context=new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
HttpServlet servlet=new TestServlet();
context.addServlet(new ServletHolder(servlet), "/*");
server.setHandler(context);
server.start();
server.join();

但是,它会在运行时死掉:

java.lang.NullPointerException
at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:304)
at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:213)
at org.eclipse.jetty.server.Server.<init>(Server.java:128)
at org.eclipse.jetty.server.Server.<init>(Server.java:103)

示例中的 servlet 是一个简单的 hello world 示例。

【问题讨论】:

    标签: java servlets jetty-9


    【解决方案1】:

    以下是使用提供的 Jetty 'DefaultServlet' 类使用 Jetty9 Embedded/Servlet 的示例。

    public static void main(String[] args) throws Exception {
      Server server = new Server(8080);
      ServletContextHandler context=new ServletContextHandler(ServletContextHandler.SESSIONS);
      context.setContextPath("/");
      DefaultServlet defaultServlet = new DefaultServlet();
      ServletHolder holderPwd = new ServletHolder("default", defaultServlet);
    context.addServlet(holderPwd, "/*");
      server.setHandler(context);
      server.start();
      server.join();
    }
    

    输出:

    2014-04-08 10:04:18.173:INFO::main: 日志记录已初始化 @132ms 2014-04-08 10:04:18.243:INFO:oejs.Server:main: jetty-9.1.3.v20140225 2014-04-08 10:04:18.282:INFO:oejsh.ContextHandler:main: 开始 o.e.j.s.ServletContextHandler@52e21a17{/,null,AVAILABLE} 2014-04-08 10:04:18.298:INFO:oejs.ServerConnector:main: 启动 ServerConnector@7388665b{HTTP/1.1}{0.0.0.0:8080} 2014-04-08 10:04:18.298:INFO:oejs.Server:main: 开始@259ms

    【讨论】:

    • 我故意为我当前的用例实例化该类。我有这个在 7 号码头工作,但无法让它在 8 号码头及更高版本中运行。
    • 更新示例以直接实例化 DefaultServlet 类。无法重现原始问题。可能是 Jetty9 上的“TestServlet”类中需要的附加功能。 Jetty9 中的嵌入式 servlet 似乎发生了很多变化。
    • 如果没有导入语句,样本将毫无用处。
    猜你喜欢
    • 1970-01-01
    • 2016-12-16
    • 2014-09-22
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2014-12-07
    相关资源
    最近更新 更多