使用 JSF 和 Java EE Batch 上传时是否可以处理文件流?
Is it possible to process a filestream while uploading with JSF and Java EE Batch?
我想在使用 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.xml
中 FacesServlet
的 <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图案太)
任何超出 <file-size-threshold>
指定大小(上例中为 1MiB)的内容都将写入本地磁盘文件系统中的临时文件,而不是保存在服务器内存中。当服务器配置的最大 POST 大小大于可用堆时,这将避免潜在的 OOM。
我想在使用 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.xml
中 FacesServlet
的 <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图案太)
任何超出 <file-size-threshold>
指定大小(上例中为 1MiB)的内容都将写入本地磁盘文件系统中的临时文件,而不是保存在服务器内存中。当服务器配置的最大 POST 大小大于可用堆时,这将避免潜在的 OOM。