Jetty:servlet与处理程序

时间:2010-11-12 10:12:10

标签: servlets jetty embedded-jetty

我想了解Jetty;

请告诉我:

1)什么时候使用Servlets和处理程序更好?

2)我可以使用带有Servlet的连接器作为“每个请求线程模型”吗?

谢谢!!!

2 个答案:

答案 0 :(得分:27)

在Jetty处理程序中处理通过连接器发出的请求。其中一个处理程序,特别是ServletHandler,允许Jetty(主要)支持servlet。 Servlet是一种可移植的Java EE概念,因此如果在Jetty中使用servlet,则可以以更便携的方式设计应用程序。另一方面,它们可能带来一些开销,因此您可能希望直接实现Handler来处理通过连接器发出的请求。

如果您在Jetty中使用servlet,则可以依赖servlet安全模型,会话支持等。如果您的应用程序不需要这样做,那么最好不要实现一个非常简单的处理程序。

答案 1 :(得分:1)

我玩的时候发现了一个有趣的观察结果。我有一个基于码头的应用程序(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集合中,一切都会正常工作。