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

如何调整Vaadin文件下载超时(非会话超时)?

Vaadin 8/24 文件下载超时解决方案

Vaadin 8 配置方式

  • 调整Push超时参数:若项目启用了Push功能,默认超时时间较短,可通过以下两种方式修改:
    • 在web.xml中添加初始化参数:
      <init-param>
          <param-name>push.timeout</param-name>
          <param-value>300000</param-value> <!-- 设置为5分钟,单位毫秒 -->
      </init-param>
      
    • 通过Java代码配置Vaadin Servlet:
      @WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
      @VaadinServletConfiguration(ui = MyUI.class, productionMode = false, pushTimeout = 300000)
      public static class MyUIServlet extends VaadinServlet {
      }
      
  • 调整容器层面的请求超时:以Tomcat为例,修改server.xml中的Connector配置,延长连接超时:
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="300000"
               redirectPort="8443"/>
    
  • 异步生成文件优化:如果超时调整后仍不稳定,可改用后台异步生成方案:
    1. 用户点击按钮后,启动异步任务生成文件并存储到服务器临时目录
    2. 文件生成完成后,通过UI提示用户并提供下载链接
    3. 定期清理服务器上的临时文件,避免存储空间浪费

Vaadin 24 配置方式

Vaadin 24基于Spring Boot,主要通过配置文件和代码优化处理:

  • 调整Push相关超时:在application.properties中添加参数:
    # 设置Push超时为5分钟
    vaadin.push.timeout=300000
    vaadin.push.long-polling.timeout=300000
    
  • 调整Spring Boot请求超时:修改Tomcat和异步请求超时:
    server.tomcat.connection-timeout=300000
    spring.mvc.async.request-timeout=300000
    
  • 异步绑定FileDownloader:避免长时间阻塞请求,先异步生成文件再触发下载:
    Button downloadBtn = new Button("下载文件");
    downloadBtn.addClickListener(e -> {
        // 异步生成文件
        CompletableFuture<InputStream> fileTask = CompletableFuture.supplyAsync(() -> {
            // 这里编写耗时的文件生成逻辑
            try {
                return new FileInputStream(generateLargeFile());
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            }
        });
    
        // 文件生成完成后绑定下载器并触发下载
        fileTask.thenAccept(inputStream -> {
            StreamResource resource = new StreamResource("large-file.csv", () -> inputStream);
            FileDownloader downloader = new FileDownloader(resource);
            downloader.extend(downloadBtn);
            downloadBtn.click();
        });
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:00:07