2010-11-12 4 views
17

Я пытаюсь понять Jetty;Jetty: сервлеты против обработчиков

Скажите, пожалуйста:

1) Когда лучше использовать сервлетов и когда Обработчики?

2) Могу ли я использовать разъемы с сервлетами для «модели нити за запрос»?

спасибо !!!

ответ

24

В обработчиках Jetty обрабатываются запросы, которые идут через разъемы. Один из обработчиков, в частности ServletHandler, позволяет Jetty поддерживать (в основном) сервлеты. Servlet - это переносная концепция Java EE, поэтому вы можете разрабатывать приложение более переносимым образом, если вы используете сервлеты в Jetty. С другой стороны, они, вероятно, принесут некоторые накладные расходы, поэтому вы можете захотеть реализовать Handler напрямую, чтобы обрабатывать запросы, поступающие через Connectors.

Если вы используете сервлеты в Jetty, вы можете положиться на модель безопасности сервлета, на поддержку сеанса и т. Д. Если это не нужно для вашего приложения, вам может быть лучше реализовать очень простой обработчик.

+0

благодарит за отзыв! – Karan

+1

@ Каран: Спасибо за репутацию! – Olaf

+0

Большое спасибо за ваш ответ !!! – Edward83

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 к существующей коллекции сервлета и все будет работать.

+0

Спасибо, очень интересно. – Edward83

Смежные вопросы