Vaadin 14生产环境访问无效路由返回可用路由列表问题排查
问题原因及解决办法
1. 确认生产模式构建参数是否真正生效
使用-pProduction构建WAR时,需确保构建工具(Maven/Gradle)正确激活了生产环境配置:
- 查看Maven构建日志,确认输出包含
Activated profiles: Production,且pom.xml中Production profile已定义vaadin.productionMode=true并排除开发依赖。 - Gradle项目需确认
-Pproduction参数触发了vaadin { productionMode = true }配置,且自动排除开发依赖。
2. 检查Servlet初始化参数(非Spring Boot项目重点)
Vaadin优先读取Servlet初始化参数判断生产模式,若未使用Spring Boot,application.properties配置可能不生效:
- 在
web.xml中为Vaadin Servlet添加初始化参数:
<servlet> <servlet-name>YourVaadinServlet</servlet-name> <servlet-class>com.vaadin.flow.server.VaadinServlet</servlet-class> <init-param> <param-name>productionMode</param-name> <param-value>true</param-value> </init-param> </servlet>
3. 配置Tomcat系统启动参数
Vaadin也会读取vaadin.productionMode系统属性,需确保Tomcat启动时传入该参数:
- 修改Tomcat的
catalina.sh(Linux)或catalina.bat(Windows),在启动参数中添加:
-Dvaadin.productionMode=true
- 重启Tomcat后检查启动日志,确认参数已加载。
4. 清理Tomcat缓存与残留文件
旧的开发模式部署残留或缓存可能导致生产模式未生效:
- 停止Tomcat,删除
webapps下你的应用文件夹及对应WAR包,重新部署新构建的生产模式WAR。 - 删除
work/Catalina/localhost/[你的应用名]目录下所有缓存文件,再重启Tomcat。
5. 确认开发依赖已排除
生产模式下必须移除Vaadin开发相关依赖:
- Maven中在Production profile里添加依赖排除:
<profile> <id>Production</id> <properties> <vaadin.productionMode>true</vaadin.productionMode> </properties> <dependencies> <dependency> <groupId>com.vaadin</groupId> <artifactId>vaadin-core</artifactId> <exclusions> <exclusion> <groupId>com.vaadin</groupId> <artifactId>vaadin-dev-mode</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </profile>
- Gradle项目确保生产模式配置中包含
excludeDevDependencies()。
内容的提问来源于stack exchange,提问作者Holger Münch
相关产品推荐
相关产品推荐

