vaadin 23 сообщает о режиме отладки при сборке для производства
Я создал свое приложение vaadin 23 в производственном режиме с помощью:
mvn clean package -Pproduction -DskipTests -U
Мой pom.xml содержит необходимый профиль:
<!-- vaadin profiles -->
<!-- https://vaadin.com/docs/latest/flow/production/production-build -->
<profiles>
<profile>
<id>production</id>
<properties>
<vaadin.productionMode>true</vaadin.productionMode>
</properties>
<!-- configuration depending on environment -->
<build>
<plugins>
<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-frontend</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
<configuration>
<productionMode>true</productionMode>
</configuration>
</plugin>
</plugins>
</build>
<!-- .. more configuration .. -->
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin</artifactId>
<exclusions>
<exclusion>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-dev-server</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</profile>
</profiles>
Я создаю военный файл для tomcat 9, используя java 17.
Война содержит WEB-INF/classes/META-INF/VAADIN/config/flow-build-info.json
{
"productionMode": true,
"useDeprecatedV14Bootstrapping": false,
"eagerServerLoad": false,
"chunks": {
"fallback": {
"jsModules": [
"@vaadin/select/src/vaadin-select.js",
"./selectConnector.js",
"@polymer/paper-ripple/paper-ripple.js",
"./custom-media-query.js",
"./com/github/appreciated/card/clickable-card.js",
"./com/github/appreciated/card/stateful-card.js",
"./grid-layout/grid-layout.js",
"./font-awesome-iron-iconset/far.js",
"./font-awesome-iron-iconset/fab.js",
"./element-media-query.js",
"@vaadin/charts/src/vaadin-chart.js",
"@vaadin/grid-pro/src/vaadin-grid-pro.js",
"@vaadin/grid-pro/src/vaadin-grid-pro-edit-column.js",
"./gridProConnector.js",
"@vaadin/board/vaadin-board-row.js",
"@vaadin/avatar-group/src/vaadin-avatar-group.js",
"@vaadin/crud/src/vaadin-crud.js",
"@vaadin/crud/src/vaadin-crud-edit-column.js",
"@vaadin/message-input/src/vaadin-message-input.js",
"@vaadin/login/src/vaadin-login-form.js",
"./messageListConnector.js",
"@vaadin/message-list/src/vaadin-message-list.js",
"@vaadin/virtual-list/vaadin-virtual-list.js",
"./virtualListConnector.js",
"@polymer/iron-list/iron-list.js",
"./ironListConnector.js",
"./ironListStyles.js",
"@vaadin/upload/src/vaadin-upload-file.js",
"@vaadin/login/src/vaadin-login-overlay.js",
"@vaadin/board/vaadin-board.js",
"./vaadin-big-decimal-field.js",
"@vaadin/app-layout/src/vaadin-drawer-toggle.js",
"@vaadin/confirm-dialog/src/vaadin-confirm-dialog.js",
"@vaadin/app-layout/src/vaadin-app-layout.js"
],
"cssImports": [
{
"value": "./styles/grid-layout.css"
}
]
}
},
"enableDevServer": false
}
WEB-INF/classes/META-INF/VAADIN/config/stats.json содержит:
{
"assetsByChunkName": {
"bundle": "VAADIN/build/vaadin-bundle-7f98e7fa04576858b6f8.cache.js"
}
}
Единственная проблема, которую я вижу в этом, заключается в том, что он включает модули, которые я не использую, но я не верю, что это имеет какое-либо отношение к текущей проблеме.
Когда я развертываю войну, tomcat сообщает:
(AtmosphereFramework.java:1087) - Atmosphere Framework 2.7.3.slf4jvaadin4 started.
(AtmosphereFramework.java:2626) - Installed AtmosphereInterceptor Track Message Size Interceptor using | with priority BEFORE_DEFAULT
(DefaultDeploymentConfiguration.java:155) - Following issues were discovered with deployment configuration:
WARNING: Vaadin is running in DEBUG MODE with debug features enabled, but with a prebuild frontend bundle (production ready).
When deploying application for production, disable debug features by enabling production mode!
See more from https://vaadin.com/docs/latest/flow/production/overview
[main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/webapps/ROOT.war] has finished in [14,764] ms
org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
[main] org.apache.catalina.startup.Catalina.start Server startup in [14985] milliseconds
в противном случае система работает должным образом.
Я следовал этому руководству по устранению неполадок, и все кажется правильным: https://vaadin.com/docs/latest/flow/production/troubleshooting
1 ответ
В конце концов я решил эту проблему благодаря хорошей идее от @Frettman.
Основной проблемой был мой сервлет vaadin, который мы настраиваем с помощью аннотаций.
@WebServlet(urlPatterns =
{ "/*" }, name = "OnePub", asyncSupported = true, loadOnStartup = 1, initParams =
{
@WebInitParam(name = "org.atmosphere.cpr.AtmosphereInterceptor", value = "dev.onepub.servlets.AtmosphereFilter"),
@WebInitParam(name = "closeIdleSessions", value = "true"),
/// changed this when we release.
@WebInitParam(name = "productionMode", value = "false")
})
Проблемной линией была
@WebInitParam(name = "productionMode", value = "false")
изменение значения на «true» решило проблему.
@WebInitParam(name = "productionMode", value = "true")
Я также сделал еще одно изменение, которое МОЖЕТ внести свой вклад в исправление.
Раздел моего производственного профиля файла pom содержал зависимость:
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin</artifactId>
<exclusions>
<exclusion>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-dev-server</artifactId>
</exclusion>
</exclusions>
</dependency>
Я не уверен, как это попало в pom, но я меняю раздел профиля на:
<profiles>
<profile>
<!-- Production mode is activated using -Pproduction -->
<id>production</id>
<properties>
<vaadin.productionMode>true</vaadin.productionMode>
</properties>
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>flow-server-production-mode</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<version>${vaadin.version}</version>
<executions>
<execution>
<goals>
<goal>build-frontend</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>