У меня есть веб-приложение, использующее Spring, Hibernate и Struts (оно работает на Tomcat)
Последовательность вызовов примерно такая ...
Действие Struts вызывает bean-компонент Spring Service, который, в свою очередь, вызывает bean-компонент Spring DAO. Реализация DAO является реализацией Hibernate.
Вопрос
Будут ли все мои весенние бобы работать в одной и той же нити?
Могу ли я сохранить что-то в ThreadLocal и получить это в другом бине?
Я совершенно уверен, что это не сработает в Session Bean без состояния.
Контейнер EJB может (или будет) создавать новый поток для каждого вызова сессионного компонента
Будет ли пружинный контейнер делать то же самое? то есть запустить все бины в одном потоке?
Когда я попробовал тест JUnit - я получил тот же идентификатор через Thread.currentThread (). GetId () в тестовом примере и двух bean-компонентах, что наводит меня на мысль, что в действии был только один поток
Или поведение непредсказуемо?
Или это изменится при работе на сервере Tomcat?
Разъяснение
Я не хочу обмениваться данными между двумя потоками. Я хочу поместить данные в ThreadLocal и быть в состоянии извлечь их из всех компонентов в стеке вызовов. Это будет работать, только если все компоненты находятся в одном потоке