Apache Commons FileUpload: проблемы с загрузкой файлов размером более 100 Кб с использованием HTTPS - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть веб-приложение на Java, которое использует Apache Commons FileUpload для загрузки файлов с помощью сервлета.

Мой базовый код годами отлично работал в простой среде http (Apache Tomcat 8.5).

Я изменил свою среду для работы с HTTPS, используя сертификат Let's Encrypt с использованием соединителя, настроенного с помощьюorg.apache.coyote.http11.Http11AprProtocol.

Мои загрузки теперь внезапно завершаются сбоем, если размер файлов превышает 100 КБ.Те же файлы успешно загружены с использованием простой среды HTTP.

Это зарегистрированное исключение:

org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. java.io.IOException: The socket [925,024,592] associated with this connection has been closed.

это фрагмент кода, который я использую для запроса управления:

  DiskFileItemFactory factory = new DiskFileItemFactory();          
  File repository = (File) 


  request.getServletContext().getAttribute("javax.servlet.context.tempdir");

  factory.setRepository(repository);

  ServletFileUpload upload = new ServletFileUpload(factory);
  upload.setHeaderEncoding(encoding); 

  multipartItems = upload.parseRequest(request);

Настройки Tomcat:

 <Connector 
    port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="443"      
  />

<Connector 
    port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
    maxThreads="150" SSLEnabled="true"  
>
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    <SSLHostConfig>
        <Certificate 
            certificateKeyFile="D:/prj/certificati/private.key"
            certificateFile="D:/prj/certificati/certificate.crt"
            certificateChainFile="D:/prj/certificati/ca_bundle.crt"
            type="RSA" 
        />
    </SSLHostConfig>
</Connector>

Я исследовал эту проблему, несколько случаев, никаких решений.

Спасибо

1 Ответ

0 голосов
/ 27 сентября 2019

Я нашел проблему.Очевидно, эта проблема вызвана этой директивой:

 <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />

, удалив это, это работает.

...