контроллер действий struts - многопоточный?

StackOverflow https://stackoverflow.com/questions/108059

  •  01-07-2019
  •  | 
  •  

Вопрос

когда они говорят, что контроллер действий в struts framework является многопоточным, означает ли это, что существует несколько экземпляров сервлета, принимающих запрос и пересылающих его в модель?ИЛИ это означает, что существует один-единственный экземпляр, принимающий все запросы?Любые визуальные эффекты будут оценены по достоинству

Это было полезно?

Решение

Как и в большинстве других сервлетов, для обработки каждого запроса создается отдельный поток.Вы должны реализовать SingleThreadedModel интерфейс для получения нового экземпляра сервлета для каждого запроса.

Другие советы

видишь http://struts.apache.org/1.x/userGuide/building_controller.html

Сервлет контроллера Struts создает только один экземпляр вашего класса Action и использует этот единственный экземпляр для обслуживания всех запросов.Таким образом, вам нужно написать потокобезопасные классы действий.Следуйте тем же рекомендациям, которые вы использовали бы для написания потокобезопасных сервлетов.Вот два общих рекомендации, которые помогут вам написать масштабируемые потокобезопасные классы действий:

  • Используйте Только локальные переменные - Наиболее важным принципом, который помогает в потокобезопасном кодировании, является использование только локальных переменных, не переменные экземпляра, в вашем классе действий.Локальные переменные создаются в стеке, который назначается (вашей JVM) каждому потоку запроса, поэтому нет необходимости беспокоиться о совместном использовании их.Действие может быть учтено в нескольких локальных методах при условии, что все необходимые переменные передаются в качестве параметров метода.Это обеспечивает потокобезопасность, поскольку JVM обрабатывает такие переменные внутренне, используя стек вызовов, который связан с одним потоком.

  • Экономьте Ресурсы - Как правило, выделение ограниченных ресурсов и распределение их по запросам от одного и того же пользователя (в сеансе пользователя) может вызвать проблемы с масштабируемостью.Например, если ваше приложение использует JDBC и вы выделяете отдельное JDBC-соединение для каждого пользователя, вы, вероятно, столкнетесь с некоторыми проблемами масштабируемости, когда ваш сайт внезапно появится на Slashdot.Вы должны стремиться использовать пулы и освобождать ресурсы (такие как подключения к базе данных) до передачи управления соответствующему компоненту представления - даже если вызванный вами bean-метод выдает исключение.

struts 1 не является потокобезопасным;но что касается strus 2, то это один экземпляр на запрос.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top