2010-11-12 42 views
17

我想了解碼頭;碼頭:servlets vs處理程序

請告訴我:

1)當是它更好地使用Servlet和當解毒?

2)我可以使用連接器與Servlets的「線程每請求模型」?

謝謝!!!

回答

24

在Jetty處理程序中處理通過連接器傳來的請求。其中一個處理程序,特別是ServletHandler,允許Jetty(主要)支持servlet。 Servlet是一個可移植的Java EE概念,因此,如果您在Jetty中使用servlet,則可以使用更便捷的方式設計您的應用程序。另一方面,他們可能會帶來一些開銷,所以您可能希望直接實施處理程序,以處理通過連接器發送的請求。

如果您在Jetty中使用servlet,那麼您可以依賴servlet安全模型,會話支持等。如果這對於您的應用程序是不必要的,那麼實現一個非常簡單的處理程序可能會更好。

+0

感謝您的迴應! – Karan 2011-06-24 19:32:10

+1

@Karan:感謝您的聲譽! – Olaf 2011-06-24 19:37:21

+0

非常感謝您的回答! – Edward83 2018-03-06 09:59:25

1

我在玩它時發現了一個有趣的觀察。我有一個基於Jetty的應用程序(dropwizard.io)在這裏,我打算以後實際添加處理器(有特殊用例爲它)使用org.eclipse.jetty.servlet.ServletContextHandler.insertHandler(HandlerWrapper handler)它只是拋出illegalStateException: STARTED

server.start() 

如果服務器已經啓動。因爲:

public void setHandler(Handler handler) { 
     if (isStarted()) 
      throw new IllegalStateException(STARTED); 
     //.. 

但在org.eclipse.jetty.servlet.ServletContextHandler.addServlet(ServletHolder servlet,String pathSpec)情況下,它會增加你的servlet現有的servlet集,一切都將正常工作。

+0

謝謝你,很有意思。 – Edward83 2018-03-06 10:00:22