Эй, у меня вопрос о многопоточности. Во-первых, сколько экземпляров DispatcherServlet/DispatcherPorlet существует? Всегда ли это единственный? Даже когда говорят 10 запросов в секунду? Что касается служб, которые по умолчанию являются одиночными. Если у меня есть компонент validationService, который вводится в обработчик для обеспечения проверки запроса, как одиночный (по умолчанию), могу ли я полагаться на тот факт, что он является синглом и что в некоторых случаях он не будет восстановлен?Весенние однополюсные бобы в высокой нагрузке
ответ
Это интересный вопрос.
Как указано в this previous question, контейнеру разрешается копировать только экземпляр сервлета. В этом случае у вас гарантирован один весенний контекст и один синглтон.
Вопрос в том, что происходит с предыдущими версиями спецификации сервлетов, которые я не уверен явно указывать это поведение явно.
На практике, однако, контейнеры только создавали экземпляр одного экземпляра сервлета - я никогда не видел, чтобы кто-то делал иначе. Поэтому можно с уверенностью предположить, что вы получите только один контекст приложения.
В зависимости от нагрузки контейнер сервлетов создает количество экземпляров сервлетов, разработчик не имеет никакого контроля над этим. Но в большинстве случаев контейнер поддерживает один экземпляр каждого сервлета (так как сервлеты должны быть потокобезопасными в любом случае).
Что касается весны singleton
бобы, это одноточие для веб-приложения - контекст приложения Spring хранится в контексте сервлета (вы можете получить к нему доступ с WebApplicationContextUtils.getWebApplicationContext(ServletContext)).
Что касается надежности: да, вы можете положиться на то, что в области применения одного контекста приложения весны имеется только один экземпляр каждого одноэлементного компонента.
Но вот столкновение, если контейнер сервлетов создает несколько экземпляров с высокой нагрузкой, они либо имеют ссылку на singleton DispactherServlet (что маловероятно), либо экземпляр DispatcherServlet создается для каждого сервлета Контейнера, если бы не было дескриптора для DispatcherServlet afaik (не можете представить себе иначе), и если есть обработчик для диспетчераServlet, должно быть столько контекстов приложения-приложения как обработчики – lisak
Кажется, что вы не внимательно прочитали мой отзыв. Я не сказал, что есть одна Spring ApplicationContext PER SERVLET INSTANCE. Я сказал, что существует один контекст PER WEB APPLICATION, независимо от того, сколько экземпляров сервлетов существует или сколько разных DispatcherServlets вы определили (вы можете определить более одного). –
На самом деле существует одна Spring ApplicationContext PER SERVLET INSTANCE (в рамках веб-приложения, конечно). Делегаты контейнеров обращаются к синглетному сервлету. Конечно, вы можете определить несколько диспетчеров, но мы говорим о экземплярах одного диспетчера, а не о трех диспетчерах ... И всегда есть только один экземпляр. – lisak
- 1. Весенние однополюсные бобы в разных контекстах применения
- 2. Весенние бобы и нитки
- 3. Jackson Serializers Весенние бобы
- 4. динамически менять весенние бобы
- 5. Обновить весенние бобы, исключая некоторые бобы
- 6. Вставить весенние бобы в RestEasy
- 7. Что в мире - весенние бобы?
- 8. Отшелушивающие весенние бобы в Муните
- 9. Весенние бобы неразрешенные в IntelliJ
- 10. Весенние бобы: сеанс и globalSession
- 11. Весенние бобы с Activiti BPMN
- 12. Назначить весенние бобы с аннотациями
- 13. Как «белая этикетка» весенние бобы
- 14. Весенние бобы DTD и XMLNS
- 15. HK2 не видит Весенние бобы
- 16. Весенние бобы (бизнес-слой) в отдельном модуле
- 17. Как использовать весенние бобы в приложении Clojure?
- 18. Вводные весенние бобы в Groovy Script
- 19. com.fasterxml.jackson.core.util.InternCache.intern() взаимоблокировки при высокой нагрузке
- 20. как подключить синглтон Весенние бобы при десериализации
- 21. Non Singleton (прототип) Весенние бобы JMX moniterable
- 22. Весенние бобы GeoModule bean injection to RepositoryRestMvcConfiguration
- 23. Инициализировать весенние бобы при запуске теста Джерси
- 24. Интегрируйте весенние бобы и JSP-теги
- 25. Как впрыскивать весенние бобы из внешней войны?
- 26. Распечатайте все загруженные весенние бобы - Spring Boot
- 27. Какие весенние бобы и весенний контекст используются?
- 28. Весенние бобы дважды инициализируются - интеграция весов
- 29. Весенние бобы созданы, но не автоуровневые
- 30. Весенние бобы не показаны под пружинными элементами
Спасибо, я знал, что tomcat создает экземпляр экземпляра Singleton, но я никогда не использовал ничего, кроме Jetty, и мне нужно, чтобы приложение было портативным. – lisak