Обучение Java. Сервлеты

Потоковый вывод


Сервлеты HTTP, как правило, поддерживают обработку нескольких клиентов одновременно. Если методы в Вашем сервлете, работающие на клиента, используют общие ресурсы, то вы должны либо:

  • Синхронизировать доступ к этому ресурсу, либо 
  • Создать сервлет, который обслуживает только одного клиента в определенный момент времени. 
  • Этот урок расскажет вам, как выполнить второй вариант. (Первый обсуждается в уроке о потоках.)

     


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

    Чтобы сервлет обслуживал только одного клиента в определенный момент времени, Вам надо реализовать интерфейс SingleThreadModel

    в добавление к наследованию класса HttpServlet.

    Реализация интерфейса SingleThreadModel не подразумевает под собой написание каких-либо дополнительных методов. Вы просто реализуете этот интерфейс, и сервер обеспечит сервлету выполнение только одного service в определенный момент времени.

    Например, сервлет ReceiptServlet принимает данные об имени пользователя, номере кредитной карточки и благодарит его за помещенный заказ. Если этот сервлет обновил базу данных, например, ту, что содержит информацию инвентаризации, тогда связь с базой данных является разделяемым ресурсом. Сервлет мог бы одинаково синхронизировать доступ к этому ресурсу, или реализовать интерфейс SingleThreadModel. Если сервлет реализует данный интерфейс, единственное изменение в коде по сравнению с выделено жирным шрифтом:

    public class ReceiptServlet extends HttpServlet implements SingleThreadModel {

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... } ... }



    Содержание раздела