[
https://issues.jboss.org/browse/RF-13444?page=com.atlassian.jira.plugin.s...
]
Lukáš Fryč commented on RF-13444:
---------------------------------
I have one concern with the suggested approach: if we will leverage Servlets 3.0 API,
specifically {{HttpServletRequest#getParts()}} method, we won't be able to listen on
file upload progress. (Correct me if I'm wrong here).
I reviewed the use of MultipartRequest25 and it seems we could avoid preliminary form data
parsing by avoiding {{super.getParameter()}} call. This is what we can do on our side. We
need to ensure then that we are able to parse parameters ourselves (without the need of a
underlying HttpRequest impl).
However: I have checked and this simple change won't work alone since another
components might be able to interfere and require parsing of formData before such as
ServletFilters or Factories, etc.
And that's also what is happening in case of CDI/Weld - it requires to read parameter
(and parse form data) here:
https://gist.github.com/lfryc/17c80f2329521fbee00d
----
One of the ways around could be wrapping our request far before any other component might
be able to read it.
Second option is finding a way how to listen on progress of a request.
r:fileUpload throws IOException "Request prolog cannot be
read"
---------------------------------------------------------------
Key: RF-13444
URL:
https://issues.jboss.org/browse/RF-13444
Project: RichFaces
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: component-input
Affects Versions: 5.0.0.Alpha2
Environment: WildFly CR1
JSF 2.2
Reporter: Juergen Zimmermann
Assignee: Lukáš Fryč
Labels: jsf22
Fix For: 5.0.0.Alpha3
I tried f:fileUpload with the latest WildFly snapshot. When uploading a jpeg file I get
this stacktrace. Maybe, RF-13061 is back in town...
{code}
SEVERE [org.richfaces.log.Application] (default task-6) Exception parsing multipart
request: Request prolog cannot be read: org.richfaces.exception.FileUploadException:
Exception parsing multipart request: Request prolog cannot be read
at org.richfaces.request.MultipartRequestParser.parse(MultipartRequestParser.java:156)
[richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
at org.richfaces.request.MultipartRequest25.parseIfNecessary(MultipartRequest25.java:77)
[richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
at org.richfaces.request.MultipartRequest25.getParameter(MultipartRequest25.java:114)
[richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
at com.sun.faces.context.RequestParameterMap.get(RequestParameterMap.java:75)
[jsf-impl-2.2.4-jbossorg-1.jar:]
at com.sun.faces.context.RequestParameterMap.get(RequestParameterMap.java:56)
[jsf-impl-2.2.4-jbossorg-1.jar:]
at java.util.Collections$UnmodifiableMap.get(Collections.java:1339) [rt.jar:1.7.0_45]
at
com.sun.faces.application.view.MultiViewHandler.calculateRenderKitId(MultiViewHandler.java:220)
[jsf-impl-2.2.4-jbossorg-1.jar:]
at
javax.faces.application.ViewHandlerWrapper.calculateRenderKitId(ViewHandlerWrapper.java:157)
[jboss-jsf-api_2.2_spec-2.2.4.jar:2.2.4]
at
javax.faces.application.ViewHandlerWrapper.calculateRenderKitId(ViewHandlerWrapper.java:157)
[jboss-jsf-api_2.2_spec-2.2.4.jar:2.2.4]
at
javax.faces.application.ViewHandlerWrapper.calculateRenderKitId(ViewHandlerWrapper.java:157)
[jboss-jsf-api_2.2_spec-2.2.4.jar:2.2.4]
at com.sun.faces.context.FacesContextImpl.isPostback(FacesContextImpl.java:212)
[jsf-impl-2.2.4-jbossorg-1.jar:]
at javax.faces.context.FacesContextWrapper.isPostback(FacesContextWrapper.java:461)
[jboss-jsf-api_2.2_spec-2.2.4.jar:2.2.4]
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:193)
[jsf-impl-2.2.4-jbossorg-1.jar:]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
[jsf-impl-2.2.4-jbossorg-1.jar:]
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121)
[jsf-impl-2.2.4-jbossorg-1.jar:]
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
[jsf-impl-2.2.4-jbossorg-1.jar:]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
[jboss-jsf-api_2.2_spec-2.2.4.jar:2.2.4]
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:87)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at
org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:70)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:67)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:70)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at
org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:239)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:226)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:72)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:145)
[undertow-servlet-1.0.0.Beta28.jar:1.0.0.Beta28]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:164)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:654)
[undertow-core-1.0.0.Beta28.jar:1.0.0.Beta28]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_45]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
Caused by: java.io.IOException: Request prolog cannot be read
at
org.richfaces.request.MultipartRequestParser.readProlog(MultipartRequestParser.java:270)
[richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
at
org.richfaces.request.MultipartRequestParser.initialize(MultipartRequestParser.java:172)
[richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
at org.richfaces.request.MultipartRequestParser.parse(MultipartRequestParser.java:148)
[richfaces-5.0.0.Alpha2.jar:5.0.0.Alpha2]
... 43 more
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira