ServerConfig.java 6.3 KB
Newer Older
D
duke 已提交
1
/*
2
 * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
D
duke 已提交
3 4 5 6
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
7
 * published by the Free Software Foundation.  Oracle designates this
D
duke 已提交
8
 * particular file as subject to the "Classpath" exception as provided
9
 * by Oracle in the LICENSE file that accompanied this code.
D
duke 已提交
10 11 12 13 14 15 16 17 18 19 20
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
21 22 23
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
D
duke 已提交
24 25 26 27
 */

package sun.net.httpserver;

M
michaelm 已提交
28 29
import java.util.logging.Logger;
import java.security.PrivilegedAction;
D
duke 已提交
30 31 32 33 34 35 36 37

/**
 * Parameters that users will not likely need to set
 * but are useful for debugging
 */

class ServerConfig {

38
    private static final int DEFAULT_CLOCK_TICK = 10000 ; // 10 sec.
D
duke 已提交
39 40

    /* These values must be a reasonable multiple of clockTick */
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
    private static final long DEFAULT_IDLE_INTERVAL = 30 ; // 5 min
    private static final int DEFAULT_MAX_IDLE_CONNECTIONS = 200 ;

    private static final long DEFAULT_MAX_REQ_TIME = -1; // default: forever
    private static final long DEFAULT_MAX_RSP_TIME = -1; // default: forever
    private static final long DEFAULT_TIMER_MILLIS = 1000;
    private static final int  DEFAULT_MAX_REQ_HEADERS = 200;
    private static final long DEFAULT_DRAIN_AMOUNT = 64 * 1024;

    private static int clockTick;
    private static long idleInterval;
    // The maximum number of bytes to drain from an inputstream
    private static long drainAmount;
    private static int maxIdleConnections;
    // The maximum number of request headers allowable
    private static int maxReqHeaders;
M
michaelm 已提交
57
    // max time a request or response is allowed to take
58 59 60 61
    private static long maxReqTime;
    private static long maxRspTime;
    private static long timerMillis;
    private static boolean debug;
62 63

    // the value of the TCP_NODELAY socket-level option
64
    private static boolean noDelay;
D
duke 已提交
65 66

    static {
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
        java.security.AccessController.doPrivileged(
            new PrivilegedAction<Void>() {
                @Override
                public Void run () {
                    idleInterval = Long.getLong("sun.net.httpserver.idleInterval",
                            DEFAULT_IDLE_INTERVAL) * 1000;

                    clockTick = Integer.getInteger("sun.net.httpserver.clockTick",
                            DEFAULT_CLOCK_TICK);

                    maxIdleConnections = Integer.getInteger(
                            "sun.net.httpserver.maxIdleConnections",
                            DEFAULT_MAX_IDLE_CONNECTIONS);

                    drainAmount = Long.getLong("sun.net.httpserver.drainAmount",
                            DEFAULT_DRAIN_AMOUNT);

84 85 86 87
                    maxReqHeaders = Integer.getInteger(
                            "sun.net.httpserver.maxReqHeaders",
                            DEFAULT_MAX_REQ_HEADERS);

88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
                    maxReqTime = Long.getLong("sun.net.httpserver.maxReqTime",
                            DEFAULT_MAX_REQ_TIME);

                    maxRspTime = Long.getLong("sun.net.httpserver.maxRspTime",
                            DEFAULT_MAX_RSP_TIME);

                    timerMillis = Long.getLong("sun.net.httpserver.timerMillis",
                            DEFAULT_TIMER_MILLIS);

                    debug = Boolean.getBoolean("sun.net.httpserver.debug");

                    noDelay = Boolean.getBoolean("sun.net.httpserver.nodelay");

                    return null;
                }
            });
D
duke 已提交
104 105 106

    }

107
    static void checkLegacyProperties(final Logger logger) {
M
michaelm 已提交
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141

        // legacy properties that are no longer used
        // print a warning to logger if they are set.

        java.security.AccessController.doPrivileged(
            new PrivilegedAction<Void>() {
                public Void run () {
                    if (System.getProperty("sun.net.httpserver.readTimeout")
                                                !=null)
                    {
                        logger.warning ("sun.net.httpserver.readTimeout "+
                            "property is no longer used. "+
                            "Use sun.net.httpserver.maxReqTime instead."
                        );
                    }
                    if (System.getProperty("sun.net.httpserver.writeTimeout")
                                                !=null)
                    {
                        logger.warning ("sun.net.httpserver.writeTimeout "+
                            "property is no longer used. Use "+
                            "sun.net.httpserver.maxRspTime instead."
                        );
                    }
                    if (System.getProperty("sun.net.httpserver.selCacheTimeout")
                                                !=null)
                    {
                        logger.warning ("sun.net.httpserver.selCacheTimeout "+
                            "property is no longer used."
                        );
                    }
                    return null;
                }
            }
        );
D
duke 已提交
142 143
    }

144
    static boolean debugEnabled() {
D
duke 已提交
145 146 147
        return debug;
    }

148
    static long getIdleInterval() {
D
duke 已提交
149 150 151
        return idleInterval;
    }

152
    static int getClockTick() {
D
duke 已提交
153 154 155
        return clockTick;
    }

156
    static int getMaxIdleConnections() {
D
duke 已提交
157 158 159
        return maxIdleConnections;
    }

160
    static long getDrainAmount() {
D
duke 已提交
161 162
        return drainAmount;
    }
M
michaelm 已提交
163

164 165 166 167 168
    static int getMaxReqHeaders() {
        return maxReqHeaders;
    }

    static long getMaxReqTime() {
M
michaelm 已提交
169 170 171
        return maxReqTime;
    }

172
    static long getMaxRspTime() {
M
michaelm 已提交
173 174 175
        return maxRspTime;
    }

176
    static long getTimerMillis() {
M
michaelm 已提交
177 178
        return timerMillis;
    }
179 180 181 182

    static boolean noDelay() {
        return noDelay;
    }
D
duke 已提交
183
}