Динамическая подгрузка данных в Table

Здравствуйте!

Пытаюсь реализовать табличку, элементы которой должны динамически подгружаться в табличку. В качестве DataSource использую SQLContainer, проинициализированный TableQuery. Данных может быть достаточно много и они могут добавляться в любое время.
Как реализовано:

        Table messagesList = new Table();
        ...............................
        messagesList.setCacheRate(0.1d);
        messagesList.setContainerDataSource(messagesContainer);messagesList.setSelectable(true);        
        messagesList.setImmediate(true);
        messagesList.setSizeFull();
        new InitializerThread().start();
        ...............................

В отдельном потоке, используя Vaadin Push периодически обновляю табличку:

[code]
class InitializerThread extends Thread {

    @Override
    public void run() {
        while (!Thread.interrupted()) {
            try {
                Thread.sleep(refreshMessagesPeriod);
            } catch (InterruptedException e) {
            }

            access(new Runnable() {

                @Override
                public void run() {
                    if (messagesList != null && !messagesList.getItemIds().isEmpty()) {
                        messagesList.refreshRowCache();
                        messagesList.focus();
                    }
                }
            });
        }
    }

[/code]Что смущает в этом способе:

  1. Тяжесть обработки при большом количестве данных.
  2. Проблема со скроллом (при обновлении скролл прыгает на первый элемент странички).
  3. Каждая перерисовка сопровождается неприятными эффектами вроде “дрожания” строк, сброс выделенного текста строки.

Очень нужен совет, как правильно реализовать легковесную и красивую подгрузку новых данных.

Использую Vaadin 7.1.15 (допускаю переход к более новой версии).

повторил вопрос в англоязычной ветке форума: https://vaadin.com/forum#!/thread/7506773

Нашел решение лучше - контролировать добавление данных вручную, периодически запрашивая новые данные. Push позволяет сразу отображать добавленные строки. Для предотвращения “подпрыгивания” скролла (вызова метода refreshRowCache), вызываю приватный метод Table.setCurrentPageFirstItemId(int, boolean), передавая индекс добавленной строки.

Приветствую!
Похожее обсуждение было пару лет назад. Если интересно вот ссылка
https://vaadin.com/forum/#!/thread/1008407/1046062