#java #ajax #spring-mvc #wildfly
#java #ajax #spring-mvc #wildfly
Вопрос:
Мне нужна помощь с отправкой большого объекта JSON на сервер с использованием ajax в angularjs. Когда я отправляю объект JSON с примерно 10000 записями в ArrayList
запросе с использованием post, он принимается, и я получаю ответ на то же самое.Но когда я загружаю 30000 записей или более и пытаюсь отправить его с помощью ajax, возвращается следующая ошибка :-
[io.undertow.request] (default task-5) UT005007: Request was not fully consumed
Как я могу это исправить?
Я использую Wildfly 10 и java 8. Есть ли какой-либо параметр размера записи, который я могу увеличить?
Комментарии:
1. Кажется, это максимальный предел, установленный вашим сервером для загрузки файла.
Ответ №1:
Похоже, вы используете Undertow для получения запроса POST. Проверьте, каково значение MAX_ENTITY_SIZE
параметра в вашей настройке, возможно, оно было ограничено:
Максимальный размер объекта запроса по умолчанию. Если тело объекта больше этого предела, то в какой-то момент при чтении запроса будет выдано
java.io.IOException
(при первом чтении для запросов фиксированной длины, когда было прочитано слишком много данных для запросов с фрагментами). Это значение является только размером по умолчанию, обработчик может переопределить это для отдельного запроса путем вызоваio.undertow.server.HttpServerExchange.setMaxEntitySize(long size)
. По умолчанию значение неограниченно.
Как было предложено в этом потоке, это потенциально настраивается весной с использованием MultipartConfigFactory
компонента:
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setMaxFileSize("100MB");
factory.setMaxRequestSize("100MB");
return factory.createMultipartConfig();
}
Ответ №2:
Предложение, сделанное @KarolDowbecki, скорее всего, сработает, но есть и другой способ. В standalone.xml
используемом файле вы можете изменить из:
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
Для:
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" max-post-size="16777216"/>
увеличить, в данном случае, до 16 МБ. Значение по умолчанию равно 10 МБ, по крайней мере, для Wildfly 16.
В качестве альтернативы, если вы хотите написать сценарий, чтобы вам не приходилось изменять его вручную standalone.xml
, вы можете использовать jboss-cli и запустить:
/subsystem=undertow/server=default-server/http-listener=default/:write-attribute(name=max-post-size,value=16777216)