Spring Webflow в Grails поддерживает множество открытых сессий - PullRequest
1 голос
/ 26 апреля 2010

У меня есть интернет-приложение, работающее на Grails 1.1.2, и оно интегрирует механизм Spring WebFlow. Проблема в том, что есть некоторые боты, игнорирующие robots.txt и довольно часто входящие в поток.

Поскольку второй шаг потока требует некоторого человеческого интеллекта, бот оставляет открытый поток после первого шага. Это вызывает много открытых потоков, что приводит к большому количеству заброшенных открытых сеансов гибернации.

Знаете ли вы какой-нибудь общий механизм очистки для такого рода потоков без присмотра (плюс сеансы гибернации) в Grails + Spring WebFlow?

Спасибо, Павел

1 Ответ

0 голосов
/ 26 апреля 2010

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

session.setMaxInactiveInterval(60);

шаг три

session.setMaxInactiveInterval(600);

Это приведет к тому, что любой сеанс на первом или втором шаге умрет после 60 секунд бездействия. Когда сеанс умирает, любые сеансы гибернации, связанные с сеансом, будут очищены. Если пользователь выполнит шаги один и два менее чем за 60 секунд, у него будет 10 минут для завершения каждого дополнительного шага.

...