1 /* 2 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.net.httpserver; 27 28 import com.sun.net.httpserver.*; 29 import com.sun.net.httpserver.spi.*; 30 import java.util.logging.Logger; 31 import java.security.PrivilegedAction; 32 33 /** 34 * Parameters that users will not likely need to set 35 * but are useful for debugging 36 */ 37 38 class ServerConfig { 39 40 static int clockTick; 41 42 static final int DEFAULT_CLOCK_TICK = 10000 ; // 10 sec. 43 44 /* These values must be a reasonable multiple of clockTick */ 45 static final long DEFAULT_IDLE_INTERVAL = 30 ; // 5 min 46 static final int DEFAULT_MAX_IDLE_CONNECTIONS = 200 ; 47 48 static final long DEFAULT_MAX_REQ_TIME = -1; // default: forever 49 static final long DEFAULT_MAX_RSP_TIME = -1; // default: forever 50 static final long DEFAULT_TIMER_MILLIS = 1000; 51 52 static final long DEFAULT_DRAIN_AMOUNT = 64 * 1024; 53 54 static long idleInterval; 55 static long drainAmount; // max # of bytes to drain from an inputstream 56 static int maxIdleConnections; 57 58 // max time a request or response is allowed to take 59 static long maxReqTime; 60 static long maxRspTime; 61 static long timerMillis; 62 static boolean debug = false; 63 64 static { 65 66 idleInterval = ((Long)java.security.AccessController.doPrivileged( 67 new sun.security.action.GetLongAction( 68 "sun.net.httpserver.idleInterval", 69 DEFAULT_IDLE_INTERVAL))).longValue() * 1000; 70 71 clockTick = ((Integer)java.security.AccessController.doPrivileged( 72 new sun.security.action.GetIntegerAction( 73 "sun.net.httpserver.clockTick", 74 DEFAULT_CLOCK_TICK))).intValue(); 75 76 maxIdleConnections = ((Integer)java.security.AccessController.doPrivileged( 77 new sun.security.action.GetIntegerAction( 78 "sun.net.httpserver.maxIdleConnections", 79 DEFAULT_MAX_IDLE_CONNECTIONS))).intValue(); 80 81 drainAmount = ((Long)java.security.AccessController.doPrivileged( 82 new sun.security.action.GetLongAction( 83 "sun.net.httpserver.drainAmount", 84 DEFAULT_DRAIN_AMOUNT))).longValue(); 85 86 maxReqTime = ((Long)java.security.AccessController.doPrivileged( 87 new sun.security.action.GetLongAction( 88 "sun.net.httpserver.maxReqTime", 89 DEFAULT_MAX_REQ_TIME))).longValue(); 90 91 maxRspTime = ((Long)java.security.AccessController.doPrivileged( 92 new sun.security.action.GetLongAction( 93 "sun.net.httpserver.maxRspTime", 94 DEFAULT_MAX_RSP_TIME))).longValue(); 95 96 timerMillis = ((Long)java.security.AccessController.doPrivileged( 97 new sun.security.action.GetLongAction( 98 "sun.net.httpserver.timerMillis", 99 DEFAULT_TIMER_MILLIS))).longValue(); 100 101 debug = ((Boolean)java.security.AccessController.doPrivileged( 102 new sun.security.action.GetBooleanAction( 103 "sun.net.httpserver.debug"))).booleanValue(); 104 } 105 106 107 static void checkLegacyProperties (final Logger logger) { 108 109 // legacy properties that are no longer used 110 // print a warning to logger if they are set. 111 112 java.security.AccessController.doPrivileged( 113 new PrivilegedAction<Void>() { 114 public Void run () { 115 if (System.getProperty("sun.net.httpserver.readTimeout") 116 !=null) 117 { 118 logger.warning ("sun.net.httpserver.readTimeout "+ 119 "property is no longer used. "+ 120 "Use sun.net.httpserver.maxReqTime instead." 121 ); 122 } 123 if (System.getProperty("sun.net.httpserver.writeTimeout") 124 !=null) 125 { 126 logger.warning ("sun.net.httpserver.writeTimeout "+ 127 "property is no longer used. Use "+ 128 "sun.net.httpserver.maxRspTime instead." 129 ); 130 } 131 if (System.getProperty("sun.net.httpserver.selCacheTimeout") 132 !=null) 133 { 134 logger.warning ("sun.net.httpserver.selCacheTimeout "+ 135 "property is no longer used." 136 ); 137 } 138 return null; 139 } 140 } 141 ); 142 } 143 144 static boolean debugEnabled () { 145 return debug; 146 } 147 148 static long getIdleInterval () { 149 return idleInterval; 150 } 151 152 static int getClockTick () { 153 return clockTick; 154 } 155 156 static int getMaxIdleConnections () { 157 return maxIdleConnections; 158 } 159 160 static long getDrainAmount () { 161 return drainAmount; 162 } 163 164 static long getMaxReqTime () { 165 return maxReqTime; 166 } 167 168 static long getMaxRspTime () { 169 return maxRspTime; 170 } 171 172 static long getTimerMillis () { 173 return timerMillis; 174 } 175 }