Menyematkan Jetty 9 menggunakan ServletContext

Saya mencoba mengupgrade dari Jetty 7 ke Jetty 9 menggunakan contoh di sini:

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();

Namun, ia mati saat runtime:

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 dalam sampel adalah sampel hello world yang sederhana.


person kasperjj    schedule 25.03.2014    source sumber


Jawaban (1)


Di bawah ini adalah contoh penggunaan Jetty9 Embedded/Servlets menggunakan kelas Jetty 'DefaultServlet' yang disediakan.

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();
}

Keluaran:

08-04-2014 10:04:18.173:INFO::main: Logging diinisialisasi @132ms 08-04-2014 10:04:18.243:INFO:oejs.Server:main: jetty-9.1.3.v20140225 04-2014 08 10:04:18.282:INFO:oejsh.ContextHandler:main: Memulai o.e.j.s.ServletContextHandler@52e21a17{/,null,AVAILABLE} 08-04-2014 10:04:18.298:INFO:oejs.ServerConnector:main: Memulai ServerConnector@7388665b {HTTP/1.1}{0.0.0.0:8080} 08-04-2014 10:04:18.298:INFO:oejs.Server:main: Dimulai @259ms

person FabFlying    schedule 25.03.2014
comment
Saya sengaja membuat instance kelas untuk kasus penggunaan saya saat ini. Saya memiliki ini yang berfungsi dengan jetty 7, tetapi tidak dapat menjalankannya di jetty 8 ke atas. - person kasperjj; 06.04.2014
comment
Contoh yang diperbarui untuk membuat instance kelas DefaultServlet secara langsung. Tidak dapat mereproduksi masalah asli. Mungkin diperlukan kemampuan tambahan di kelas 'TestServlet' di Jetty9. Tampaknya banyak yang berubah untuk servlet yang tertanam di Jetty9. - person FabFlying; 08.04.2014
comment
Tanpa pernyataan import, sampel tidak ada gunanya. - person Fusca Software; 23.08.2017