2

我想在使用 JSF 2.2 上传文件时使用 Java EE Batch 处理大文件。

有没有办法获取上传流?

如果我使用 JSF 上传一个大文件,我总是会遇到以下错误:

java.lang.OutOfMemoryError: Java heap space
..
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
4

1 回答 1

2

文件大小阈值<h:inputFile>可以在in的入口<servlet>配置如下:FacesServletweb.xml

<servlet>
    <servlet-name>facesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <multipart-config>
        <file-size-threshold>1048576</file-size-threshold>
    </multipart-config>
</servlet>

(注意:如果您还没有,因此依赖 JSF 2.2+ 隐式 servlet 注册,那么您还需要<servlet-mapping>在所需的 URL 模式上显式添加一个)

超出<file-size-threshold>指定大小(上例中为 1MiB)的任何内容都将写入本地磁盘文件系统中的临时文件,而不是保存在服务器内存中。当服务器配置的最大 POST 大小大于可用堆时,这将避免潜在的 OOM。

于 2015-08-06T16:27:45.350 回答