Spring Webflow в Grails поддерживает множество открытых сеансов гибернации

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

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

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

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


person Pavel P    schedule 26.04.2010    source источник


Ответы (1)


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

session.setMaxInactiveInterval(60);

шаг третий

session.setMaxInactiveInterval(600);

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

person Jared    schedule 26.04.2010