Ваадин Ю.И. Отдельное исключение - PullRequest
0 голосов
/ 04 июня 2018

Я использую Vaadin 7.7.10 и вижу много UIDetachedExceptions в журналах при использовании фона Threads и аннотации @Push.

Пожалуйста, предложите, как правильно освободить ресурсы, чтобыпочисти мои логи.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Если вы сделаете что-то в UI.access(..) с UI, которое уже было отсоединено, вы вызовете UIDetachedException.Это естественно, если, например, пользователь закрыл браузер или в сети было что-то, что закрыло соединение, и, таким образом, UI был отсоединен.Если в вашем случае UIDetachedException происходит по этим причинам, это безвредно.В этом случае вы можете избежать засорения вашего журнала, установив UI.isAttached(), который возвращает false, если UI был отсоединен, и UI.isClosing(), если UI уже был помещен в очередь очистки.

0 голосов
/ 04 июня 2018

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

Наилучшим подходом обычно является переопределение метода detach в пользовательском интерфейсе вашего приложения.подкласс и сделать уборку там.Просто не забудьте также позвонить super.detach().

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

...