You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Vaadin 7迁移到14后调用MprPushConfiguration.getPushMode出现NPE

Vaadin 7→14 MPR迁移手动推送模式NullPointerException解决

问题原因

堆栈信息显示MprPushConfiguration.getPushMode()方法触发空指针,核心原因是MPR初始化推送配置时,内部依赖的核心配置对象未完成初始化,通常由MPR版本兼容问题或推送配置未显式绑定导致。

解决方案

  • 确认MPR版本兼容性
    必须使用MPR 3.x版本(Vaadin 14对应MPR 3系列),旧版MPR存在手动推送模式下的初始化bug,升级到最新MPR 3.x稳定版可解决大部分此类问题。

  • 显式配置推送模式
    在自定义MprServlet中强制初始化推送配置,绕过自动导入的潜在问题:

    @WebServlet(urlPatterns = "/*", asyncSupported = true)
    @VaadinServletConfiguration(ui = YourLegacyUI.class, productionMode = false)
    public class MigratedServlet extends MprServlet {
        @Override
        protected void servletInitialized() throws ServletException {
            super.servletInitialized();
            // 手动设置推送模式,确保配置对象完成初始化
            getService().getPushConfiguration().setPushMode(PushMode.MANUAL);
        }
    }
    
  • 清理遗留的Vaadin7推送配置
    移除web.xml或其他配置文件中Vaadin7时代的推送相关参数(比如pushmode),避免与MPR的配置逻辑冲突。

  • 确保WebSocket依赖完整
    检查项目依赖中是否包含Vaadin Push模块,Maven示例:

    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin-push</artifactId>
    </dependency>
    

    同时确保Servlet设置了asyncSupported = true(如上述示例),WebSocket需要异步支持。

  • 临时修复MPR配置类(若版本升级无效)
    自定义MprPushConfiguration子类覆盖空指针方法,避免未初始化时返回null:

    public class FixedMprPushConfiguration extends MprPushConfiguration {
        private PushMode pushMode = PushMode.MANUAL;
    
        public FixedMprPushConfiguration(VaadinService service) {
            super(service);
        }
    
        @Override
        public PushMode getPushMode() {
            return pushMode != null ? pushMode : PushMode.DISABLED;
        }
    
        @Override
        public void setPushMode(PushMode pushMode) {
            this.pushMode = pushMode;
        }
    }
    

    然后在Servlet中替换默认配置:

    @Override
    protected PushConfiguration createPushConfiguration(VaadinService service) {
        return new FixedMprPushConfiguration(service);
    }
    

内容的提问来源于stack exchange,提问作者Hasan Birol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 07:42:22