Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Управляет ли Tapestry всеми потоками внутри приложения?

Автор вопроса: AndremoniyОтветов: 2

Рассмотрим сервис, который запускает внутри себя некий thread. Будет ли Tapestry 5 управлять этим потоком в части, например. закрытие hibernate сеансов внутри такого потока или нет? (Например, мы можем передать объект Session внутри такого дочернего потока из сервиса. Будет ли Tapestry безопасно закрывать этот сеанс после того, как поток умрет?).

inversion-of-controlioc-containertapestry

Ответы

Ответ 1 · рейтинг 2 · lance-java

Tapestry может управлять только вещами, объявленными в вашем AppModule.

Как правило, если вы используете ключевое слово "новое", оно не управляется гобеленом.

Если вы хотите, чтобы гобелен управлял вашим исполняемым файлом, взгляните на ParallelExecutor.

Если вы хотите имитировать поток, управляемый гобеленом, вы должны вызвать Perthreadmanager.cleanup() после завершения выполнения вашего исполняемого файла.

Ответ 2 · Nicolas Barrera

Сеанс Hibernate подключается к потоку веб-контейнера, который обрабатывает текущий запрос.

Если вы решите создать свой собственный поток и передать ему этот сеанс, то изменения в этом сеансе будут зафиксированы, только если они будут выполнены до того, как Tapestry зафиксирует или до того, как вышеупомянутый поток веб-контейнера завершит обработку этого запроса.

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы