Wicket 增加“的锁定时间”;1分钟后,Pagemap null仍被锁定;例外情况

Wicket 增加“的锁定时间”;1分钟后,Pagemap null仍被锁定;例外情况,wicket,Wicket,1分钟的布景在哪里?是小门还是雄猫?或 如何修改此选项?为确保用户的理智,保留页面映射锁的请求所需时间不超过1分钟,而不是增加超时时间。这可以通过使用像Quartz这样的作业框架并向其提交作业来完成,而不是在请求侦听器中进行繁重的处理。这样,您的用户可以快速得到答案,您的响应时间将大大缩短 超时是一种特定于Wicket的保护措施,用于防止不好的事情发生。在海事组织,这一数字应该减少而不是增加。不幸的是,许多web应用程序的请求会让用户等待10秒以上,因此很快就会出现问题。使用1分钟是明智的妥协。

1分钟的布景在哪里?是小门还是雄猫?或
如何修改此选项?

为确保用户的理智,保留页面映射锁的请求所需时间不超过1分钟,而不是增加超时时间。这可以通过使用像Quartz这样的作业框架并向其提交作业来完成,而不是在请求侦听器中进行繁重的处理。这样,您的用户可以快速得到答案,您的响应时间将大大缩短

超时是一种特定于Wicket的保护措施,用于防止不好的事情发生。在海事组织,这一数字应该减少而不是增加。不幸的是,许多web应用程序的请求会让用户等待10秒以上,因此很快就会出现问题。使用1分钟是明智的妥协。AFAIK它是不可配置的

超时是一种解决方案,用于处理时间过长的请求,并使页面映射在较长时间内保持锁定。对页面映射的访问是同步的,因此开发人员在使用组件时可以使用单线程、有状态的编程模型,而不是(可怕的)多线程、有状态的编程模型,正是这种模型使使用servlet变得如此有趣

简而言之:不要伤害您的用户,使用作业框架来处理长时间运行的任务,并从UI中卸载处理


另一种解决方案是,如果超时是由用户打开多个选项卡并同时使用这两个选项卡造成的,则启用多窗口支持。这将创建多个页面映射,每个页面映射都有自己的保护。

虽然我同意Martijn的回答(您不应该让用户等待超过一分钟),但可以通过调用应用程序对象来设置超时

将其设置为3分钟的示例:

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

有时您必须等待报告,因此设置更大的超时非常有用,
WebApplication.get().getRequestCycleSettings().setTimeout(Duration.minutes(3));