Как изменить настройки Jetty через SparkJava? / Слишком большое исключение формы / org.eclipse.jetty.server.Request.maxFormContentSize
Я использую SparkJava 2.2, который использует Jetty 9.0.2.
Я получаю исключение "Слишком большая форма", которое выбрасывает Джетти. Я уже знаю, как решить эту проблему, если бы я использовал Jetty напрямую:
http://www.eclipse.org/jetty/documentation/current/setting-form-size.html
ПРОБЛЕМА:
Теперь мне нужно найти способ изменитьorg.eclipse.jetty.server.Request.maxFormContentSize
установка через SparkJava. Есть ли способ сделать это?
Я должен отметить, что другие методы (JVM_OPTS, System.setProperty) не работают для меня по некоторым причинам. Я все еще получаю то же исключение.
Трассировки стека:
[qtp1858644635-27] ERROR spark.webserver.MatcherFilter -
java.lang.IllegalStateException: Form too large 308913>200000
at org.eclipse.jetty.server.Request.extractParameters(Request.java:334)
at org.eclipse.jetty.server.Request.getParameterMap(Request.java:765)
at javax.servlet.ServletRequestWrapper.getParameterMap(ServletRequestWrapper.java:193)
at spark.QueryParamsMap.<init>(QueryParamsMap.java:59)
at spark.Request.initQueryMap(Request.java:364)
at spark.Request.queryMap(Request.java:349)
at spark.webserver.RequestWrapper.queryMap(RequestWrapper.java:213)
at com.xyz.analytics.webservice.RequestTools.getRequestQueryMap(RequestTools.java:27)
at com.xyz.analytics.webservice.RequestTools.getMandrillQueryParams(RequestTools.java:22)
at com.xyz.analytics.webservice.Endpoints.lambda$initiateEndpointsAndExceptionHandlers$2(Endpoints.java:61)
at com.xyz.analytics.webservice.Endpoints$Lambda$3/1485697819.handle(Unknown Source)
at spark.SparkBase$1.handle(SparkBase.java:311)
at spark.webserver.MatcherFilter.doFilter(MatcherFilter.java:159)
at spark.webserver.JettyHandler.doHandle(JettyHandler.java:60)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:179)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:451)
at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:252)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:266)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:240)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:596)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:527)
at java.lang.Thread.run(Thread.java:745)
Редактировать:Я должен отметить, что другие методы (JVM_OPTS, System.setProperty) не работают для меня.
Ну, отладчик даже не останавливается на любой точке останова, установленной вorg.eclipse.jetty.server.handlerContextHandler
... Плюс, когда он останавливается наorg.eclipse.jetty.server.Request
точки останова, свойство _context равно нулю. Кажется, SparkJava обрабатывает это по-другому. Тупик.
Запрос делает еще одну вещь перед установкойmaxFormContentSize = 200000;
, Он проверяет _channel.getServer (). GetAttribute ("org.eclipse.jetty.server.Request.maxFormContentSize"). За исключением того, что коллекция атрибутов Сервера пуста ... И я не вижу способа добавить какой-либо атрибут. Сервер Jetty создается SparkBase.init (), который вызывает SparkServer.ignite (). Но это нам мало помогает. Нелегко "взломать", чтобы сделать наши собственные корректировки. Это кажется довольно безнадежным.