การฝัง 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 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: เริ่มต้นแล้ว oejs.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

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