У меня есть веб-приложение на 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>
Я исследовал эту проблему, несколько случаев, никаких решений.
Спасибо