Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
1.1.8
-
None
-
MyFaces Tomahawk, JSF 1.2 - SUN RI on JBoss 5.01 / integrated Tomcat
Description
uploadThresholdSize seems to be ignored. I set it to 0 to get all files saved to disk for further processing in EJB. I also tried with 1 and 1k - but the result stayed the same. I got OutOfMemoryError when uploading huge files as HtmlFileUploadRenderer after line 180 always creeated an instance of UploadedFileDefaultMemoryImpl.
String implementation = ((HtmlInputFileUpload) uiComponent).getStorage();
if( implementation == null || ("memory").equals( implementation ) )
upFile = new UploadedFileDefaultMemoryImpl( fileItem );
else
upFile = new UploadedFileDefaultFileImpl( fileItem );
So something seems to be wrong with HtmlInputFileUpload.getStorage() - which uses an EL Expression to get the implementation.But I'm not sure how this is handled in myFaces. The expression just reads:
ValueExpression vb = getValueExpression("storage");
I'm not sure if that is put correctly in the FacesContext. It only works when I use fileUpload's storage attribute to hardcode the strategy to disk in JSF.
UploadedFileDefaultMemoryImpl always will load the complete file into memory (line 42) - no matter what FileItem / ThresholdingOutputStream is used!
int sizeInBytes = (int)fileItem.getSize();
bytes = new byte[sizeInBytes];
fileItem.getInputStream().read(bytes);
I guess that this is causing my memory issues.
Attachments
Attachments
Issue Links
- is duplicated by
-
TOMAHAWK-1380 HtmlFileUpload uses a lot of memory
- Closed
- is part of
-
TOMAHAWK-1381 HtmlInputFileUpload does not fail gracefully when filesize exceeds uploadMaxFileSize web.xml value
- Closed