如何通过 SparkJava 更改 Jetty 设置? / 表格太大异常 / org.eclipse.jetty.server.Request.maxFormContentSize
How to change Jetty settings through SparkJava? / Form too Large Exception / org.eclipse.jetty.server.Request.maxFormContentSize
我正在使用 SparkJava 2.2,它正在使用 Jetty 9.0.2。
我收到 Jetty 抛出的 "Form too large" 异常。如果我直接使用Jetty,我已经知道如何解决这个问题了:
Form too Large Exception
http://www.eclipse.org/jetty/documentation/current/setting-form-size.html
问题:
现在我需要找到一种通过 SparkJava 更改 org.eclipse.jetty.server.Request.maxFormContentSize
设置的方法。有没有办法做到这一点?
我必须注意其他方法(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(Endpoints.java:61)
at com.xyz.analytics.webservice.Endpoints$$Lambda/1485697819.handle(Unknown Source)
at spark.SparkBase.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.run(QueuedThreadPool.java:527)
at java.lang.Thread.run(Thread.java:745)
编辑:
I must note that other methods (JVM_OPTS, System.setProperty) do not work for me.
好吧,调试器甚至不会在 org.eclipse.jetty.server.handlerContextHandler
内设置的任何断点处停止...另外,当它在 org.eclipse.jetty.server.Request
断点处停止时,_context 属性 为空。似乎 SparkJava 以不同的方式处理它。死胡同。
请求在设置 maxFormContentSize = 200000;
之前还做了一件事。它检查 _channel.getServer().getAttribute("org.eclipse.jetty.server.Request.maxFormContentSize")。
除了服务器的属性集合是空的......而且我没有看到任何添加任何属性的方法。 Jetty Server 由调用 SparkServer.ignite() 的 SparkBase.init() 创建。
但对我们帮助不大。 "break in" 进行我们自己的调整并不容易。看来没救了。
Spark 2.2 不可能
creation of the ServerConnector is hardcoded in the SparkServer,您不能在事后更改这些值,它们必须在服务器启动之前传递到 ServerConnector。
建议使用 Spark 提交错误以使其可配置。
嗯,在访问 服务器对象 后,您可以随时执行以下操作:
server.setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", 1024 * 1024);
希望对您有所帮助!
大家好消息:)
在 Spark 2.6(2017 年 4 月发布)中,嵌入式 Jetty 是完全可配置的!
发行说明:http://sparkjava.com/news#spark-26-released
在此处查看原始的未来请求以获取更多详细信息:https://github.com/perwendel/spark/issues/314
和相关的拉取请求:
https://github.com/perwendel/spark/pull/813
请注意,也可以 运行 在另一台 Web 服务器而不是嵌入式 Jetty 服务器上启动 Spark:
http://sparkjava.com/documentation#other-web-server
我正在使用 SparkJava 2.2,它正在使用 Jetty 9.0.2。
我收到 Jetty 抛出的 "Form too large" 异常。如果我直接使用Jetty,我已经知道如何解决这个问题了:
Form too Large Exception
http://www.eclipse.org/jetty/documentation/current/setting-form-size.html
问题:
现在我需要找到一种通过 SparkJava 更改 org.eclipse.jetty.server.Request.maxFormContentSize
设置的方法。有没有办法做到这一点?
我必须注意其他方法(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(Endpoints.java:61)
at com.xyz.analytics.webservice.Endpoints$$Lambda/1485697819.handle(Unknown Source)
at spark.SparkBase.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.run(QueuedThreadPool.java:527)
at java.lang.Thread.run(Thread.java:745)
编辑:
I must note that other methods (JVM_OPTS, System.setProperty) do not work for me.
好吧,调试器甚至不会在 org.eclipse.jetty.server.handlerContextHandler
内设置的任何断点处停止...另外,当它在 org.eclipse.jetty.server.Request
断点处停止时,_context 属性 为空。似乎 SparkJava 以不同的方式处理它。死胡同。
请求在设置 maxFormContentSize = 200000;
之前还做了一件事。它检查 _channel.getServer().getAttribute("org.eclipse.jetty.server.Request.maxFormContentSize")。
除了服务器的属性集合是空的......而且我没有看到任何添加任何属性的方法。 Jetty Server 由调用 SparkServer.ignite() 的 SparkBase.init() 创建。
但对我们帮助不大。 "break in" 进行我们自己的调整并不容易。看来没救了。
Spark 2.2 不可能
creation of the ServerConnector is hardcoded in the SparkServer,您不能在事后更改这些值,它们必须在服务器启动之前传递到 ServerConnector。
建议使用 Spark 提交错误以使其可配置。
嗯,在访问 服务器对象 后,您可以随时执行以下操作:
server.setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", 1024 * 1024);
希望对您有所帮助!
大家好消息:) 在 Spark 2.6(2017 年 4 月发布)中,嵌入式 Jetty 是完全可配置的! 发行说明:http://sparkjava.com/news#spark-26-released
在此处查看原始的未来请求以获取更多详细信息:https://github.com/perwendel/spark/issues/314 和相关的拉取请求: https://github.com/perwendel/spark/pull/813
请注意,也可以 运行 在另一台 Web 服务器而不是嵌入式 Jetty 服务器上启动 Spark: http://sparkjava.com/documentation#other-web-server