如何通过SparkJava更改Jetty设置? / Form too Large Exception / org.eclipse.jetty.server.Request.maxFormContentSize [英] How to change Jetty settings through SparkJava? / Form too Large Exception / org.eclipse.jetty.server.Request.maxFormContentSize

查看:389
本文介绍了如何通过SparkJava更改Jetty设置? / Form too Large Exception / org.eclipse.jetty.server.Request.maxFormContentSize的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用使用Jetty 9.0.2的SparkJava 2.2。



我得到Jetty抛出的Form too large异常。如果我直接使用Jetty,我已经知道如何解决这个问题:



表单太大例外



http://www.eclipse.org/jetty/documentation/current/setting-form-size.html



问题:



现在我需要找到一种方法来改变 org.eclipse.jetty.server.Request.maxFormContentSize 通过SparkJava进行设置。有没有办法做到这一点?



我必须注意其他方法(JVM_OPTS,System.setProperty)由于某些原因不适合我。我仍然得到同样的例外。



Stacktrace:

  [qtp1858644635-27]错误spark.webserver.MatcherFilter  -  
java.lang.IllegalStateException:在org.eclipse.jetty.server.Request.extractParameters(Request.java:334)上格式太大308913> 200000

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 $ initiateEnd pointsAndExceptionHandlers $ 2(Endpoints.java:61)
at com.xyz.analytics.webservice.Endpoints $$ Lambda $ 3 / 1485697819.handle(未知来源)
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.QueuedTh readPool.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属性为null。似乎SparkJava以不同的方式处理它。死胡同。



在设置 maxFormContentSize = 200000; 之前,请求还要做一件事。它检查_channel.getServer()。getAttribute(org.eclipse.jetty.server.Request.maxFormContentSize)。
除了服务器的属性集合为空......我没有看到任何添加任何属性的方法。 Jetty Server由SparkBase.init()创建,它调用SparkServer.ignite()。
但它对我们没什么帮助。要打破我们自己的调整并不容易。看起来很无望。

解决方案

大家好消息:)
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


I'm using SparkJava 2.2 which is using Jetty 9.0.2.

I'm getting "Form too large" exception which is thrown by Jetty. I already know how to solve this problem if I was using Jetty directly:

Form too Large Exception

http://www.eclipse.org/jetty/documentation/current/setting-form-size.html

PROBLEM :

Now I need to find a way to change org.eclipse.jetty.server.Request.maxFormContentSize setting through SparkJava. Is there a way to do this?

I must note that other methods (JVM_OPTS, System.setProperty) do not work for me for some reason. I'm still getting the same exception.

Stacktrace:

[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)

Edit:

I must note that other methods (JVM_OPTS, System.setProperty) do not work for me.

Well, debugger doesn't even stop at any breakpoint set within org.eclipse.jetty.server.handlerContextHandler... Plus when it stops at org.eclipse.jetty.server.Request breakpoints, _context property is null. Seems that SparkJava is handling it differently. Dead end.

Request does one more thing before setting maxFormContentSize = 200000;. It checks _channel.getServer().getAttribute("org.eclipse.jetty.server.Request.maxFormContentSize"). Except Server's attribute collection is empty... And I don't see any way to add any attribute. Jetty Server is created by SparkBase.init() which calls SparkServer.ignite(). But it doesn't help us much. It's not easy to "break in" to make our own adjustments. It seems pretty hopeless.

解决方案

Good news everyone :) In Spark 2.6 (released April 2017) embedded Jetty is fully configurable! Release notes: http://sparkjava.com/news#spark-26-released

See the original future request for more details here: https://github.com/perwendel/spark/issues/314 and related pull request here: https://github.com/perwendel/spark/pull/813

NOTE that it is also possible to run Spark on another web server instead of the embedded Jetty server: http://sparkjava.com/documentation#other-web-server

这篇关于如何通过SparkJava更改Jetty设置? / Form too Large Exception / org.eclipse.jetty.server.Request.maxFormContentSize的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆