在使用JSF和Java EE批处理上传时是否可以处理文件流?



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

是否有办法获得上传流?

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

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

<h:inputFile>的文件大小阈值可以在web.xmlFacesServlet<servlet>项中配置,如下所示:

<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注册,那么您还需要在所需的URL模式上显式地添加一个<servlet-mapping>)

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

相关内容

  • 没有找到相关文章

最新更新