Help us understand the problem. What is going on with this article?

SparkでPOSTデータの最大個数と最大数を変更する方法

More than 1 year has passed since last update.

Jettyでフォームの値の最大値は、デフォルトで200KBになっている。
SparkはJettyを利用しているので、これに準ずる。

Jetty単体の場合は色々な設定方法があるようだが、Sparkの場合は結構めんどくさい。

詳細は省くが、やり方は下記のとおり。

public class Main {
  public static void main(String[] args) {
    EmbeddedServers.add(EmbeddedServers.Identifiers.JETTY, new EmbeddedJettyFactory(new MyJettyServerFactory()));

    get("/", () -> "Hello Spark!");
  }
}

class MyJettyServerFactory implements JettyServerFactory {
    /**
     * Creates a Jetty server.
     *
     * @param maxThreads          maxThreads
     * @param minThreads          minThreads
     * @param threadTimeoutMillis threadTimeoutMillis
     * @return a new jetty server instance
     */
    @Override
    public Server create(int maxThreads, int minThreads, int threadTimeoutMillis) {
        Server server;

        if (maxThreads > 0) {
            int max = maxThreads;
            int min = (minThreads > 0) ? minThreads : 8;
            int idleTimeout = (threadTimeoutMillis > 0) ? threadTimeoutMillis : 60000;

            server = new Server(new QueuedThreadPool(max, min, idleTimeout));
        } else {
            server = new Server();
        }

        server.setAttribute("org.eclipse.jetty.server.Request.maxFormKeys", 20000); // POSTデータの最大個数
        server.setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", 5000000); // POSTデータの最大値

        return server;
    }

    /**
     * Creates a Jetty server with supplied thread pool
     * @param threadPool thread pool
     * @return a new jetty server instance
     */
    @Override
    public Server create(ThreadPool threadPool) {
        return threadPool != null ? new Server(threadPool) : new Server();
    }
}

ちなみにプログラムでフォームの値を取得しない限り、エラーとはならない。
これって仕様的にどうなんだろう。

teekee
https://github.com/tkapp/
http://teekee.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away