2013-08-15 2 views
0

Я создаю сервлет (например, MainServlet), где для того, чтобы быть потокобезопасным, я создаю объект (например, MainServletProcesor), а затем делегируя вызов объекту для обработки HttpRequest. Члены экземпляра MainServletProcessorhas, которые используются для выполнения запроса. Мне было интересно, хорошо ли этот подход с точки зрения производительности. Является ли этот подход созданием экземпляра процессора для запроса хорошей идеей?Производительность и экземпляры в Java-сервлете

ответ

1

Ваш сервлет doXYZ() методы - это точки входа (ваша точка зрения) для вашего приложения. Если вы должны были написать всю логику обработки запросов в каждом из этих методов, ваш код очень быстро станет неуправляемым.

Что вы делаете, вполне разумно и на самом деле является хорошей практикой. Создание объекта практически не требует времени. Когда ваш контейнер Servlet получает фактический запрос HTTP, он фактически идет и создает тонну объектов (HttpServletRequest, HttpServletResponse, Streams, Headers и т. Д.), Не видя его.

Вы можете посмотреть поток обработки запроса для Tomcat here. Это не покажет вам, какие объекты создаются для каждого запроса, но вы можете экстраполировать (или посмотреть исходный код).

1

Почему бы и нет? Создание объекта дешево, и во время обработки и предоставления вашего запроса вы, вероятно, создаете намного больше.

Создание объекта на несколько порядков быстрее, чем запрос к базе данных, или запись ответа на выходной поток.

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