Exception t:fileInputUpload上载文件时为空源

Exception t:fileInputUpload上载文件时为空源,exception,jsf,upload,null,tomahawk,Exception,Jsf,Upload,Null,Tomahawk,我正在使用tomahawk(1.1.11)和Mojarra(2.1.4)开发JSF应用程序。当我上传小文件(kb)时,它工作正常,但当我上传大约160Mb的文件时,它会发送一个错误null source 以下是我目前的代码: <h:form id="menuForm" enctype="multipart/form-data"> <h:outputLabel for="option" value="Acciones disponibles: " />

我正在使用tomahawk(1.1.11)和Mojarra(2.1.4)开发JSF应用程序。当我上传小文件(kb)时,它工作正常,但当我上传大约160Mb的文件时,它会发送一个错误null source

以下是我目前的代码:

    <h:form id="menuForm" enctype="multipart/form-data">
        <h:outputLabel for="option" value="Acciones disponibles: " />
        <h:selectOneMenu id="option"
                         value="#{uploadFile.option}">
            <f:selectItem itemLabel="Seleccione una opción..." itemValue="null" />
            <f:selectItems value="#{uploadFile.options}" />
            <f:ajax render="@form" execute="@form" />
        </h:selectOneMenu>

        <h:panelGrid id="dataLoad" columns ="3" 
                     rendered="#{uploadFile.option == 'Agregar información (sin validación).' ||
                                 uploadFile.option == 'Cargar información completa (con validación).' || 
                                 uploadFile.option == 'Cargar solo información errónea (con validación).'}">
            <h:outputLabel for="upfile" value="Archivo: " />
            <t:inputFileUpload id="upfile" 
                               value="#{uploadFile.upFile}" />
            <h:panelGroup/>
            <h:panelGroup/>
            <h:commandButton value="Continuar"
                             onclick="return confirmation()"
                             action="#{uploadFile.upload}" />
        </h:panelGrid>

        <h:panelGrid id="dataValidate" columns="3"
                     rendered="#{uploadFile.option == 'Validar información actual.'}">
            <h:commandButton value=" Validar " action="#{uploadFile.validate()}"/>
        </h:panelGrid>

        <h:panelGrid id="listFiles" columns="3"
                     rendered="#{uploadFile.option == 'Visualizar todos los archivos.'}">
            <t:tree2 id="tree" value="#{listFiles.treeRoot}"
                     var="node" varNodeToggler="t" 
                     clientSideToggle="false">
                <f:facet name="folder">
                    <h:panelGroup>
                        <t:graphicImage value="images/folderOpen.png"
                                        rendered="#{t.nodeExpanded}"
                                        border="0" />
                        <t:graphicImage value="images/folderClose.png"
                                        rendered="#{!t.nodeExpanded}"
                                        border="0" />
                        <h:outputText value="#{node.description}"
                                      styleClass="nodeFolder" />
                    </h:panelGroup>
                </f:facet>
                <f:facet name="file">
                    <h:panelGroup>
                        <h:commandLink immediate="true"
                                       action="#{listFiles.download(node.identifier)}">
                            <t:graphicImage value="images/file.png" border="0" />
                            <h:outputText value="#{node.description}" />
                        </h:commandLink>
                    </h:panelGroup>
                </f:facet>
            </t:tree2>
        </h:panelGrid>
    </h:form>

终于!我找到了问题的原因,但我真的不确定发生了什么,所以我想如果有人能帮我解决这个问题

首先,问题在于web.xml文件。最后,我有了类似的想法

<filter-mapping>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <servlet-name>/faces/*</servlet-name>
</filter-mapping>

MyFaceXtensionsFilter
/面孔/*

所以我从web.xml中删除了它,它上传文件时没有任何问题!我认为,服务器与这个
`过滤器映射
servlet映射
相混淆。我希望有更多经验的人能帮助我(以及所有阅读此问题的人)解决这个问题。

Rabbit您可以从您正在使用的apache commons fileupload jar中删除FileUploadBase文件

如果愿意,可以在其中设置最大文件和请求大小限制。这就是我在搜索任何配置项以自定义apaches File Upload 1.2.1 100mb限制之上的限制后克服大小限制所做的

你可以把src弄下来

只需修改源文件重新编译并覆盖fileupload jar中的现有类文件


确保您获得的源zip与您正在使用的文件上载版本完全对应,否则可能会出现问题

请在您的问题中包含完整的stacktrace。我还添加了web.xml配置,可能我缺少tomahawk的一些配置。另一方面,我能够以Mb的顺序上载文件,但是我需要上传一个大约3.86 Gb的文件。我尝试上载大文件,但它没有发送任何错误/异常。
应该指向
FacesServlet
,而不是表示URL模式。您已经有了正确的条目,因此请确实删除该错误条目。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>org.apache.myfaces.CHECK_EXTENSIONS_FILTER</param-name>
        <param-value>false</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>

    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>

    <filter>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>

        <init-param>
            <param-name>uploadMaxFileSize</param-name>
            <param-value>5g</param-value>
        </init-param>
        <init-param>
            <param-name>uploadThresholdSize</param-name>
            <param-value>500m</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

    <filter-mapping>
        <filter-name>MyFacesExtensionsFilter</filter-name>
        <servlet-name>/faces/*</servlet-name>
    </filter-mapping>
</web-app>
<filter-mapping>
    <filter-name>MyFacesExtensionsFilter</filter-name>
    <servlet-name>/faces/*</servlet-name>
</filter-mapping>