Неожиданный сеанс Vaadin с истекшим сроком действия и параллельная весенняя загрузка приложений - PullRequest
0 голосов
/ 17 февраля 2020

Я использую Vaadin 8.9.4 и Spring boot 2.2.4.RELEASE. У меня есть 2 весенних загрузочных приложения, FirstApplication (server.port=8083) и SecondApplication (server.port=8084). Оба приложения имеют @SpringUI аннотированный класс, расширяющий класс пользовательского интерфейса, как показано ниже. Сессия для FirstApplication истекает, как только я нажимаю на кнопку в SecondApplication, и наоборот. Это происходит только тогда, когда я использую две вкладки chorme параллельно. Если я использую два разных браузера, все работает как положено.

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

Примечание. Я новичок в весенней загрузке и пытаюсь создать 2 микросервиса, взаимодействующих друг с другом через API Rest.

@SpringUI
@Theme("valo")
public class FirstApplicationUI extends UI {

    private static final long serialVersionUID = 9197592298697220144L;

    @Override
    protected void init(final VaadinRequest request) {
        final VerticalLayout layout = new VerticalLayout();
        final Label label = new Label("First Application");
        final Button button = new Button("click");

        button.addClickListener(e -> Notification.show("First Application"));

        layout.addComponents(label, button);

        setContent(layout);
    }
}

@SpringUI
@Theme("valo")
public class SecondApplicationUI extends UI {

    private static final long serialVersionUID = 9059755286859361908L;

    @Override
    protected void init(final VaadinRequest request) {
        final VerticalLayout layout = new VerticalLayout();
        final Label label = new Label("Second Application");
        final Button button = new Button("click");

        button.addClickListener(e -> Notification.show("Second Application"));

        layout.addComponents(label, button);

        setContent(layout);
    }
}

1 Ответ

1 голос
/ 17 февраля 2020

Это ваши два приложения, сражающиеся за один и тот же файл cookie; оба используют одно и то же имя, и ваш браузер успешно отправляет обоим бэкэндам один и тот же повар ie, поскольку порт не считается.

Измените имя хотя бы в одном из ваших приложений; см server.servlet.session.cookie.name в https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html

...