我试图了解码头。
请告诉我:
什么时候使用 Servlet 更好,什么时候使用 Handler?
我可以将连接器与 Servlet 一起用于“每个请求的线程模型”吗?
我试图了解码头。
请告诉我:
什么时候使用 Servlet 更好,什么时候使用 Handler?
我可以将连接器与 Servlet 一起用于“每个请求的线程模型”吗?
在 Jetty 中,处理程序处理来自连接器的请求。具体来说ServletHandler
,其中一个处理程序允许 Jetty(主要)支持 servlet。Servlet 是一个可移植的 Java EE 概念,因此如果您在 Jetty 中使用 servlet,您可以以更可移植的方式设计您的应用程序。另一方面,它们可能会带来一些开销,因此您可能希望直接实现一个处理程序来处理来自连接器的请求。
如果您在 Jetty 中使用 servlet,您可以依赖 servlet 安全模型、会话支持等。如果您的应用程序不需要这些,您最好实现一个非常简单的处理程序。
我在玩它时发现了一个有趣的观察结果。我有一个基于码头的应用程序(dropwizard.io),在这里我计划在实际之后添加处理程序(它有特殊的用例)
server.start()
如果服务器已经启动,使用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 集合中,一切都会正常工作。