Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 4.1
-
Fix Version/s: 4.1.1
-
Component/s: ACE-Components
-
Labels:None
-
Environment:Liferay Portal 7 / Tomcat 8
-
Assignee Priority:P1
Description
Steps to Reproduce:
- Download and install [Liferay Portal 7.0.0-B7|http://sourceforge.net/projects/lportal/files/Liferay%20Portal/7.0.0%20B7/] (scheduled to be released this week -- B7 includes Tomcat 8 whereas B6 includes Tomcat 7)
- Copy the icefaces4-portlet-4.0.0-SNAPSHOT.war attachment fromICE-10951 to the $LIFERAY_HOME/deploy folder
- Add a new portal page named ICE4
- Click on the "Menu" icon in the UPPER LEFT corner
- Click on the "+" icon that has title "Add Page"
- Type "ICE4" for the name and press enter/return
- Add the ICEfaces4 portlet to a portal page
- Click on the "+" icon in the UPPER RIGHT conrer
- Click on "Applications" in the accordion menu
- Click on "Sample"
- Click the "Add" link to the right of "ICEfaces4"
- Reload the ICE4 page
- Attempt to upload a file and click Submit
If the bug is fixed, then the file will upload properly.
Otherwise, if the bug still exists, then this error message will be rendered above the portlet: "The server request has failed because there was a problem reading the multi-part request"
In the debugger, I found that the try/catch block at line#151 of FileEntryUpload.afterPhase(PhaseEvent) was getting hit:
{code}
FacesMessage ajaxResponse = FileEntryStatuses.PROBLEM_READING_MULTIPART.getFacesMessage(facesContext, (UIComponent)null, (FileInfo)null);
facesContext.addMessage((String)null, ajaxResponse);
if(facesContext.isProjectStage(ProjectStage.Development)) {
log.log(Level.WARNING, "Problem reading multi-part form upload, likely due to a file upload being cut off from the client losing their network connection or closing their browser tab or window.", var30);
}
And the exception in the debugger is:
{noformat}
java.lang.ClassCastException: com.liferay.faces.bridge.filter.liferay.internal.ResourceRequestBridgeLiferayImpl cannot be cast to javax.servlet.http.HttpServletRequest
{noformat}
It is my best guess that this is happening in Liferay 7 (but not Liferay 6.2) because Liferay 7 is bundled with Tomcat 8, and this section of code in FileEntryUpload.java is executing because Class.forName("javax.servlet.http.Part") returned a non-null value, indicating Servlet 3.x (Tomcat 8) instead of Servlet 2.5 (Tomcat 7).
- Download and install [Liferay Portal 7.0.0-B7|http://sourceforge.net/projects/lportal/files/Liferay%20Portal/7.0.0%20B7/] (scheduled to be released this week -- B7 includes Tomcat 8 whereas B6 includes Tomcat 7)
- Copy the icefaces4-portlet-4.0.0-SNAPSHOT.war attachment from
- Add a new portal page named ICE4
- Click on the "Menu" icon in the UPPER LEFT corner
- Click on the "+" icon that has title "Add Page"
- Type "ICE4" for the name and press enter/return
- Add the ICEfaces4 portlet to a portal page
- Click on the "+" icon in the UPPER RIGHT conrer
- Click on "Applications" in the accordion menu
- Click on "Sample"
- Click the "Add" link to the right of "ICEfaces4"
- Reload the ICE4 page
- Attempt to upload a file and click Submit
If the bug is fixed, then the file will upload properly.
Otherwise, if the bug still exists, then this error message will be rendered above the portlet: "The server request has failed because there was a problem reading the multi-part request"
In the debugger, I found that the try/catch block at line#151 of FileEntryUpload.afterPhase(PhaseEvent) was getting hit:
{code}
FacesMessage ajaxResponse = FileEntryStatuses.PROBLEM_READING_MULTIPART.getFacesMessage(facesContext, (UIComponent)null, (FileInfo)null);
facesContext.addMessage((String)null, ajaxResponse);
if(facesContext.isProjectStage(ProjectStage.Development)) {
log.log(Level.WARNING, "Problem reading multi-part form upload, likely due to a file upload being cut off from the client losing their network connection or closing their browser tab or window.", var30);
}
And the exception in the debugger is:
{noformat}
java.lang.ClassCastException: com.liferay.faces.bridge.filter.liferay.internal.ResourceRequestBridgeLiferayImpl cannot be cast to javax.servlet.http.HttpServletRequest
{noformat}
It is my best guess that this is happening in Liferay 7 (but not Liferay 6.2) because Liferay 7 is bundled with Tomcat 8, and this section of code in FileEntryUpload.java is executing because Class.forName("javax.servlet.http.Part") returned a non-null value, indicating Servlet 3.x (Tomcat 8) instead of Servlet 2.5 (Tomcat 7).
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #47793 | Tue Feb 16 09:53:23 MST 2016 | ken.fyten | |
Files Changed | ||||
MODIFY
/icefaces4/branches/icefaces-4.1.1/icefaces/core/src/main/java/org/icefaces/util/EnvUtils.java
|
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #47784 | Mon Feb 15 11:47:09 MST 2016 | mircea.toma | |
Files Changed | ||||
MODIFY
/icefaces4/trunk/icefaces/core/src/main/java/org/icefaces/util/EnvUtils.java
|