Опубликовать большой JSON-объект, используя ajax-запрос - PullRequest
1 голос
/ 28 марта 2019

Мне нужна помощь с отправкой большого JSON-объекта на сервер, используя ajax в angularjs. Когда я отправляю объект JSON с примерно 10000 записями в ArrayList с помощью почтового запроса, он принимается, и я получаю ответ на него. Но когда я загружаю 30000 записей или более и пытаюсь отправить его с помощью ajax, он возвращает следующую ошибку : -

[io.undertow.request] (default task-5) UT005007: Request was not fully consumed

Как я могу это исправить?

Я использую Wildfly 10 и Java 8. Есть ли какой-либо параметр размера сообщения, который я могу увеличить?

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Вы, похоже, используете Undertow для получения запроса POST. Проверьте значение параметра MAX_ENTITY_SIZE в вашей настройке, возможно, оно было ограничено:

Максимальный размер по умолчанию для объекта запроса. Если тело объекта больше этого предела, то в какой-то момент при чтении запроса будет выброшено java.io.IOException (при первом чтении для запросов фиксированной длины, когда слишком много данных было прочитано для фрагментированных запросов). Это значение является только размером по умолчанию, обработчик может переопределить его для отдельного запроса, вызвав io.undertow.server.HttpServerExchange.setMaxEntitySize(long size). По умолчанию неограничено.

Как указано в этой теме , это потенциально настраивается в Spring с использованием MultipartConfigFactory bean:

@Bean
public MultipartConfigElement multipartConfigElement() {
     MultipartConfigFactory factory = new MultipartConfigFactory();
     factory.setMaxFileSize("100MB");
     factory.setMaxRequestSize("100MB");
     return factory.createMultipartConfig();
}
0 голосов
/ 28 марта 2019

Предложение @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)
...