Class BrowserlessApplicationContext
- All Implemented Interfaces:
AutoCloseable
- Direct Known Subclasses:
SecuredBrowserlessApplicationContext
Manages a shared VaadinServletService and servlet that are shared
across all users and their windows. This models the application level of the
Vaadin hierarchy: one application contains multiple user sessions, each with
multiple UI instances (browser windows).
Instances of this class are thread-affine: they must be
created, used, and closed on the same thread. The active context is held in a
ThreadLocal and is not visible to other threads. This class is not
safe for concurrent access from multiple threads; driving the same context
from parallel test threads is unsupported.
This base class is unsecured: it has no SecurityContextHandler. For
multi-user security isolation, configure a handler via
BrowserlessApplicationContext.Builder.withSecurityContextHandler(SecurityContextHandler) — the
builder transitions to SecuredBrowserlessApplicationContext.Builder
and build()
returns the typed SecuredBrowserlessApplicationContext, which exposes
credential-aware newUser(...) overloads. Framework-specific modules
(Spring, Quarkus) provide convenience factory methods for both paths.
var app = BrowserlessApplicationContext.create(MyView.class); var user1 = app.newUser(); var window1 = user1.newWindow(); window1.navigate(MyView.class); // ... app.close();
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBuilder for creating a customizedBrowserlessApplicationContext. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Closes this application context and all its user contexts.Creates a plain Java application context, scanning the packages of the given classes for@Route-annotated views.Creates a plain Java application context, scanning the given packages for@Route-annotated views.create(UnaryOperator<BrowserlessApplicationContext.Builder> configurer) Creates a plain Java application context, applying the given configurer to a fresh builder beforebuildingit.static <C> SecuredBrowserlessApplicationContext<C> createSecured(Function<BrowserlessApplicationContext.Builder, SecuredBrowserlessApplicationContext.Builder<C>> configurer) Creates a credential-typed application context.newUser()Creates a new user context representing an anonymous user session.
-
Method Details
-
create
Creates a plain Java application context, scanning the given packages for@Route-annotated views.- Parameters:
viewPackages- package names to scan for views; an empty array falls back to a full classpath scan- Returns:
- a new application context
-
create
Creates a plain Java application context, scanning the packages of the given classes for@Route-annotated views.- Parameters:
viewPackageClasses- classes whose packages should be scanned for views- Returns:
- a new application context
-
create
public static BrowserlessApplicationContext create(UnaryOperator<BrowserlessApplicationContext.Builder> configurer) Creates a plain Java application context, applying the given configurer to a fresh builder beforebuildingit. The configurer cannot benull; passUnaryOperator.identity()to accept all defaults.- Parameters:
configurer- builder configurer- Returns:
- a new application context
-
createSecured
public static <C> SecuredBrowserlessApplicationContext<C> createSecured(Function<BrowserlessApplicationContext.Builder, SecuredBrowserlessApplicationContext.Builder<C>> configurer) Creates a credential-typed application context. The configurer must callBrowserlessApplicationContext.Builder.withSecurityContextHandler(SecurityContextHandler)on the supplied builder so that it returns aSecuredBrowserlessApplicationContext.Buildercarrying the required handler.Using a separate method name rather than an overload of
create(UnaryOperator)is intentional: Java overload resolution cannot disambiguate two lambdas whose parameter types share theFunctionerasure.- Type Parameters:
C- the credentials type- Parameters:
configurer- builder configurer that installs a security handler and returns the resulting secured builder- Returns:
- a new credential-aware application context
-
newUser
Creates a new user context representing an anonymous user session.When a
SecurityContextHandleris configured (on aSecuredBrowserlessApplicationContext), the handler is asked to install its anonymous-equivalent state (e.g. Spring sets anAnonymousAuthenticationToken). On this unsecured base class no security setup is performed.- Returns:
- the new user context
- Throws:
IllegalStateException- if this context has been closed
-
close
public void close()Closes this application context and all its user contexts.Closes every
BrowserlessUserContextcreated by this application (which in turn closes their windows), fires service destroy listeners, and resets theVaadinServicethread-local. This method is idempotent: subsequent invocations have no effect.- Specified by:
closein interfaceAutoCloseable
-