Встраивание Jetty 9 с использованием ServletContext

Я пытаюсь перейти с 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)

Сервлет в примере представляет собой простой образец приветствия, мир.


person kasperjj    schedule 25.03.2014    source источник


Ответы (1)


Ниже приведен пример использования Jetty9 Embedded/Servlets с использованием предоставленного класса Jetty DefaultServlet.

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 08 10:04:18.282:INFO:oejsh.ContextHandler:main: Started oejsServletContextHandler@52e21a17{/,null,AVAILABLE} 08.04.2014 10:04:18.298:INFO:oejs.ServerConnector:main: Started ServerConnector@7388665b {HTTP/1.1}{0.0.0.0:8080} 2014-04-08 10:04:18.298:INFO:oejs.Server:main: запущено @259 мс

person FabFlying    schedule 25.03.2014
comment
Я намеренно создавал экземпляр класса для моего текущего варианта использования. У меня это работает с причалом 7, но не могу заставить его работать в причале 8 и выше. - person kasperjj; 06.04.2014
comment
Обновлен пример для прямого создания экземпляра класса DefaultServlet. Не удалось воспроизвести исходную проблему. Возможно, в классе «TestServlet» на Jetty9 требуются дополнительные возможности. Похоже, для встроенных сервлетов в Jetty9 многое изменилось. - person FabFlying; 08.04.2014
comment
Без операторов импорта образец бесполезен. - person Fusca Software; 23.08.2017