Я установил веб-приложение Wicket + Hibernate + Spring, которое включает сбор некоторых данных (создание и возврат некоторых файлов), сохранение их в базе данных, создание некоторых изображений и отображение всего этого на веб-странице.
Все это отлично работает для коротких прогонов, но иногда сбор данных (который включает некоторое удаленное перехват номера) занимает слишком много времени (20+ минут) и время ожидания. Я пытался решить эту проблему, используя два подхода, но оба они показывают некоторые проблемы.
Первым подходом было использование AjaxLazyLoadPanel s и просто выполнение всего внутри getLazyLoadComponent. Это работало нормально для коротких запусков, но для более чем 20-минутных запусков LazyLoadComponents не загружался (хороший оксюморон там) из-за тайм-аутов.
Второй подход заключался в создании промежуточного фрагмента с добавленным AjaxSelfUpdatingTimerBehavior с продолжительностью, установленной в 10 секунд, который опрашивал файлы, создаваемые при обработке числа. Похоже, что из-за этого задачи выполняются в фоновом режиме без проблем, но происходит сбой, когда возвращаемые данные необходимо сохранить в базе данных. Я использую шаблон Open Session in View, но, возможно, это не удается при попытке сохранить данные через 20 минут ?? (Решение может заключаться в решении этого ..).
Из-за вышеуказанных проблем я сейчас читаю альтернативные подходы для решения этих длительных задач и наткнулся на:
Теперь мне интересно, может ли какой-либо из них лучше подойти для решения проблем тайм-аута, с которыми я сталкиваюсь как при выполнении задач, так и после хранения данных в базе данных, или же у кого-нибудь есть какие-либо другие решения, которые могли бы помочь в этой ситуации.
Мне бы очень хотелось узнать, жизнеспособен ли новый подход, прежде чем я потрачу еще один день на реализацию чего-то, что в конце концов может не сработать.
С уважением,
Тим