Рассмотрим сервис, который запускает внутри себя некий thread. Будет ли Tapestry 5 управлять этим потоком в части, например. закрытие hibernate сеансов внутри такого потока или нет? (Например, мы можем передать объект Session внутри такого дочернего потока из сервиса. Будет ли Tapestry безопасно закрывать этот сеанс после того, как поток умрет?).
Вопрос
Управляет ли Tapestry всеми потоками внутри приложения?
Ответы
Ответ 1 · рейтинг 2 · lance-java
Tapestry может управлять только вещами, объявленными в вашем AppModule.
Как правило, если вы используете ключевое слово "новое", оно не управляется гобеленом.
Если вы хотите, чтобы гобелен управлял вашим исполняемым файлом, взгляните на ParallelExecutor.
Если вы хотите имитировать поток, управляемый гобеленом, вы должны вызвать Perthreadmanager.cleanup() после завершения выполнения вашего исполняемого файла.
Ответ 2 · Nicolas Barrera
Сеанс Hibernate подключается к потоку веб-контейнера, который обрабатывает текущий запрос.
Если вы решите создать свой собственный поток и передать ему этот сеанс, то изменения в этом сеансе будут зафиксированы, только если они будут выполнены до того, как Tapestry зафиксирует или до того, как вышеупомянутый поток веб-контейнера завершит обработку этого запроса.
Контроль Tapestry над сеансом гибернации привязан к текущему запросу, после обработки запроса сеанс закрывается, поэтому порождение еще одного потока, пережившего запрос на использование сеанса, было бы плохой идеей.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Внедрение свойства NserviceBus
- Использование контейнера IoC в качестве локатора службы для HttpHandler
- Список всех типов, зарегистрированных в экземпляре контейнера Castle Windsor
- Castle Windsor разрешение и дженерики
- Добавление нотации к зависимости компонента в Виндзорском замке
- Можно ли отключить автоматическое создание экземпляров UnityContainer?