Servlets Jetty:servlet与处理程序
我正在努力理解Jetty 请告诉我:Servlets Jetty:servlet与处理程序,servlets,jetty,embedded-jetty,Servlets,Jetty,Embedded Jetty,我正在努力理解Jetty 请告诉我: 何时使用servlet和何时使用处理程序更好 我可以将连接器与servlet一起用于“每个请求的线程模型”吗 在Jetty中,处理程序处理通过连接器发出的请求。其中一个处理程序,特别是ServletHandler,允许Jetty(主要)支持servlet。Servlet是一个可移植的JavaEE概念,所以如果在Jetty中使用Servlet,您可以以更可移植的方式设计应用程序。另一方面,它们可能会带来一些开销,因此您可能希望直接实现一个处理程序来处理通过连接
在Jetty中,处理程序处理通过连接器发出的请求。其中一个处理程序,特别是
ServletHandler
,允许Jetty(主要)支持servlet。Servlet是一个可移植的JavaEE概念,所以如果在Jetty中使用Servlet,您可以以更可移植的方式设计应用程序。另一方面,它们可能会带来一些开销,因此您可能希望直接实现一个处理程序来处理通过连接器发出的请求
如果您在Jetty中使用servlet,您可以依赖servlet安全模型、会话支持等。如果您的应用程序不需要这样做,那么最好实现一个非常简单的处理程序。我在使用它时发现了一个有趣的观察结果。我有一个基于jetty的应用程序(dropwizard.io),在这里我计划在实际应用程序之后添加处理程序(有它的特殊用例) 使用
org.eclipse.jetty.servlet.ServletContextHandler.insertHandler(HandlerWrapper handler)
如果服务器已经启动,它只会抛出illegalStateException:STARTED
。因为:
public void setHandler(Handler handler) {
if (isStarted())
throw new IllegalStateException(STARTED);
//..
但是在
org.eclipse.jetty.servlet.ServletContextHandler.addServlet(ServletHolder servlet,String pathSpec)
的情况下,它会将您的servlet
添加到现有的servlet集合中,一切都会正常工作。@Karan:感谢您的声誉!谢谢,很有意思。
public void setHandler(Handler handler) {
if (isStarted())
throw new IllegalStateException(STARTED);
//..