Some of my HTTP requests I have to send are humongous. Sometimes in megabytes. The underlying Jetty server was throwing
"Form too large" exception because,
POST requests’ body size exceeds what is supported. The default maximum
POST request size is
Now, Spark does not offer any direct ways to configure the settings of the underlying Jetty server. Here is the open issue on that.
The framework authors were busy with discussing the design on how to expose the Jetty object to configure from Spark. But, our requirement is get the service working immediately. So, I was looking for a temporary fix, in the meantime the authors were trying to come up with the best method to do this.
Thanks to some kind people in the internet, the best way was to modify the hardcoded default value in the Jetty server directly.
Obtained the exact version of Jetty, Spark was using from its Maven dependencies as -
9.3.6.v20151106. Finding out the source code for this particular release was harder than I anticipated.
Finally obtained the source from Eclipse’s Jetty repo.
From the issues page, we can observe that the value is hardcoded at
maxFormContentSize. A recursive search for string
grep -r maxFormContentSize
shows that the largest number of occurrences is in
src/main/java/org/eclipse/jetty/server/Request.java. Searching for maxFormContentSize and replacing the hardcoded value to
Build the project with
and we get jetty-server-9.3.6.v20151106.jar
Replacing the jetty server jar file obtained from the maven repos, with our custom-built one fixes the issue.
Sometimes duct tapes make the greatest weapons.