Увеличьте время блокировки для исключения" через 1 минуту pagemap null все еще заблокирован"

org.apache.wicket.protocol.http.request.InvalidUrlException:
org.apache.wicket.WicketRuntimeException: 
After 1 minute the Pagemap null is still locked by:
Thread[http-8443-3,5,main], giving up trying to get the page for path: 3:timer

где эта 1 минута установлена? Это калитка или кот? или. ..? Как я могу изменить это?

2 ответов


хотя я согласен с ответом Martijn (вы не должны заставлять пользователей ждать более минуты), тайм-аут можно установить, позвонив WebApplication.getRequestCycleSettings().setTimeout() в объекте application.

например, чтобы установить его на 3 минуты:

WebApplication.get().getRequestCycleSettings().setTimeout(Duration.minutes(3));

вместо увеличения тайм-аута, возможно, убедитесь в здравомыслии ваших пользователей, что запрос на блокировку карты страницы занимает менее 1 минуты. Это можно сделать, используя структуру заданий, такую как Quartz, и отправив ей задание вместо тяжелой обработки в прослушивателе запросов. Таким образом, ваш пользователь быстро получит ответ, и Ваше время отклика будет намного лучше.

тайм-аут-это особая защита калитки, чтобы предотвратить плохие вещи. IMO it должно быть сделано меньше, а не увеличено. К сожалению, многие веб-приложения имеют запросы, которые заставляют пользователя ждать более 10 секунд, так что это станет проблематичным быстро. Использование 1 минуты-разумный компромисс. AFAIK не настраивается.

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

короче говоря: не вредите своим пользователям, используйте job framework для обработки ваших длительных задач и выгрузки обработки из вашего пользовательского интерфейса.

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