Vaadin 14 SessionInitListener
A quick tip on how to add a (Vaadin) session init listener: first,
create a VaadinServiceInitListener as documented at VaadinServiceInitListener tutorial.
Afterwards, use this code to init the session:
public class ApplicationServiceInitListener
implements VaadinServiceInitListener {
@Override
public void serviceInit(ServiceInitEvent event) {
// ...
event.getSource().addSessionInitListener(e -> {
// init the session: e.getSession()
});
}
}
A bug report #417 to enhance the official docs have been opened - please upvote.
Init’ing the lower-level Servlet Session
Then you need @WebListener-annotated class implementing HttpSessionListener.
Spring
Documented in this StackOverflow answer.
Simply create a class ApplicationServiceInitListener as above, but don’t
forget to annotate it with @Component.
Adding @EventListener on SessionInitEvent doesn’t work, implementing
ApplicationListener<SessionInitEvent> doesn’t work.
MAKE SURE to remove any stray META-INF/services/com.vaadin.flow.server.VaadinServiceInitListener
file, otherwise serviceInit() will be called but SessionInitListener WILL NOT.