Runtime Configuration
Vaadin applications have extra parameters that may be configured to change its behavior. This section describes how to apply the properties. For Spring applications, there is Spring specific instructions available.
Using System Properties
When using Java’s system properties to set the Vaadin application parameters, the vaadin.
prefix is needed to be specified before the parameter names. The following shows and example of setting the system property when executing a Maven goal from the command line:
mvn jetty:run -Dvaadin.frontend.url.es6=http://mydomain.com/es6/ -Dvaadin.frontend.url.es5=http://mydomain.com/es5/
System properties can be configured for Maven plugin executions. For instance, the following example sets a Vaadin specific system property when the Jetty Maven plugin is run:
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<systemProperties>
<systemProperty>
<name>vaadin.pushMode</name>
<value>disabled</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
Using Servlet Initialization Parameters
Another alternative is to use servlet initialization parameters. You can use the Servlet 3.0 @WebServlet
annotation, which requires you to configure your own servlet (otherwise it is done automatically by Vaadin with default parameter values):
@WebServlet(urlPatterns = "/*", name = "myservlet", asyncSupported = true, initParams = {
@WebInitParam(name = "frontend.url.es6", value = "http://mydomain.com/es6/"),
@WebInitParam(name = "frontend.url.es5", value = "http://mydomain.com/es5/") })
@VaadinServletConfiguration(productionMode = false)
public class MyServlet extends VaadinServlet {
}
Yet another approach is to use the web.xml
file:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
id="WebApp_ID" version="3.0"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>
com.vaadin.server.VaadinServlet
</servlet-class>
<init-param>
<param-name>frontend.url.es6</param-name>
<param-value>http://mydomain.com/es6/</param-value>
</init-param>
<init-param>
<param-name>frontend.url.es5</param-name>
<param-value>http://mydomain.com/es5/</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Note | System properties override application properties ergo if you have both properties with the same name specified, the system one will be used. |
Configuration Properties
There are a number of properties that you can use to configure your Vaadin application.
This document summarizes the properties that are defined in com.vaadin.server.DeploymentConfiguration
and com.vaadin.server.Constants
classes.
These properties can be set from the command line as a system property, as a Servlet init parameter in the web.xml
or using the @WebServlet
annotation.
Note | If you use Spring Boot then you should add the prefix vaadin. , e.g. vaadin.productionMode=true. |
Property | Description |
---|---|
productionMode | Turns application to work in production mode. Production mode disables most of the logged information that appears on the console because logging and other debug features can have a significant performance impact. In addition to this, development mode JS functions are not exported, |
requestTiming | If request timing info should be made available. If true, in each response the server includes some basic timing information. This can be used for performance testing. |
disable-xsrf-protection | Cross-site request forgery protection. This protection is enabled by default, but it might need to be disabled to allow a certain type of testing. For these cases, the check can be disabled by setting the init parameter. |
heartbeatInterval | Vaadin UIs that are open on the client side send a regular heartbeat to the server to indicate they are still alive, even though there is no ongoing user interaction. When the server does not receive a valid heartbeat for a given UI, it will eventually remove that UI from the session. |
closeIdleSessions | When it is set to true (the default is false), the session will be closed if no UI is active. Heartbeat requests are just like any other request from the servlet container’s viewpoint. This means that as long as there is an open UI, the session never expires even though there is no user interaction. You can control this behavior by setting an init parameter named closeIdleSessions to true. |
pushMode | The permitted values are “disabled” or “manual”. Please consult Server Push Configuration documentation. |
pushURL | It is the url to use for push requests. Some servers require a predefined URL to push. Please consult Server Push Configuration documentation. |
syncIdCheck | Returns whether sync id checking is enabled. The sync id is used to gracefully handle situations when the client sends a message to a connector that has recently been removed on the server. By default, it is true. |
sendUrlsAsParameters | Returns whether the sending of URL’s as GET and POST parameters in requests with content-type <code>application/x-www-form-urlencoded</code>is enabled or not. |
pushLongPollingSuspendTimeout | When using the long polling transport strategy, it specifies how long it accepts responses after each network request. Number of milliseconds. |
maxMessageSuspendTimeout | In certain cases, such as when the server sends adjacent |
load.es5.adapters | Include polyfills for browsers that do not support ES6 to their initial page. In order for web components to work, extra libraries (polyfills) are required to be loaded, can be turned off if different versions or libraries should be included instead. |
frontend.url.es5 | A location Flow searches web components’ files in production mode when the request is coming from older browsers, not supporting es6, default web components’ development language version. |
frontend.url.es6 | A location Flow searches web components’ files in production mode for requests from modern browsers. |
disable.webjars | Configuration name for the parameter that determines if Flow should use webJars or not. If set to true, webjars would be ignored during request resolving, allowing Flow to use an external source of web components’ files. |
original.frontend.resources | Configuration name for the parameter that determines if Flow should use bundled fragments or not. |
i18n.provider | I18N provider property. To use localization and translation strings the application only needs to implement |
disable.automatic.servlet.registration | Configuration name for the parameter that determines if Flow should automatically register servlets needed for the application to work. |
compatibilityMode | When set to |
devmode.optimizeBundle | By default, in development mode all frontend resources found on the class path are included in the generated Webpack bundle. When set to |
devmode.liveReload.enabled | This is by default set to |
pnpm.enable | Available since Vaadin 14.2, this flag can be used to enable pnpm instead of npm for resolving and downloading frontend dependencies. By default it is |