首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JDK6 Http server的设立

2012-10-19 
JDK6 Http server的设置地球人都知道sun在jdk中六种自带了一个轻量级http server.用它可以很容易实现一些

JDK6 Http server的设置

地球人都知道sun在jdk中六种自带了一个轻量级http server.
用它可以很容易实现一些轻量级的http服务,用来做测试和辅助工具很方便。
不过关于其的文档很少,参数调节等都没有文档说明,一切只能去看其源代码。
今天遇到一个问题:当客户端超过一定时间未发送数据,则连接被服务端自动关闭。
必须调整连接时间才行。

经过查找,JDK中,有个叫做ServerConfig的类,这里面设置了这个http server的一些必要参数,比如读取等待时间,写入等待时间等。

?

class ServerConfig {    static int clockTick;    static int defaultClockTick = 10000 ; // 10 sec.    /* These values must be a reasonable multiple of clockTick */    static long defaultReadTimeout = 20 ; // 20 sec.    static long defaultWriteTimeout = 60 ; // 60 sec.    static long defaultIdleInterval = 300 ; // 5 min    static long defaultSelCacheTimeout = 120 ;  // seconds    static int defaultMaxIdleConnections = 200 ;     static long defaultDrainAmount = 64 * 1024;    static long readTimeout;    static long writeTimeout;    static long idleInterval;    static long selCacheTimeout;    static long drainAmount;// max # of bytes to drain from an inputstream    static int maxIdleConnections;    static boolean debug = false;    static {idleInterval = ((Long)java.security.AccessController.doPrivileged(new sun.security.action.GetLongAction("sun.net.httpserver.idleInterval", defaultIdleInterval))).longValue() * 1000;clockTick = ((Integer)java.security.AccessController.doPrivileged(new sun.security.action.GetIntegerAction("sun.net.httpserver.clockTick", defaultClockTick))).intValue();maxIdleConnections = ((Integer)java.security.AccessController.doPrivileged(new sun.security.action.GetIntegerAction("sun.net.httpserver.maxIdleConnections", defaultMaxIdleConnections))).intValue();readTimeout = ((Long)java.security.AccessController.doPrivileged(new sun.security.action.GetLongAction("sun.net.httpserver.readTimeout", defaultReadTimeout))).longValue()* 1000;selCacheTimeout = ((Long)java.security.AccessController.doPrivileged(new sun.security.action.GetLongAction("sun.net.httpserver.selCacheTimeout", defaultSelCacheTimeout))).longValue()* 1000;writeTimeout = ((Long)java.security.AccessController.doPrivileged(new sun.security.action.GetLongAction("sun.net.httpserver.writeTimeout", defaultWriteTimeout))).longValue()* 1000;drainAmount = ((Long)java.security.AccessController.doPrivileged(new sun.security.action.GetLongAction("sun.net.httpserver.drainAmount", defaultDrainAmount))).longValue();debug = ((Boolean)java.security.AccessController.doPrivileged(new sun.security.action.GetBooleanAction("sun.net.httpserver.debug"))).booleanValue();    }    static long getReadTimeout () {return readTimeout;    }    static long getSelCacheTimeout () {return selCacheTimeout;    }    static boolean debugEnabled () {return debug;    }    static long getIdleInterval () {return idleInterval;    }    static int getClockTick () {return clockTick;    }    static int getMaxIdleConnections () {return maxIdleConnections;    }    static long getWriteTimeout () {return writeTimeout;    }    static long getDrainAmount () {return drainAmount;    }}

?从代码可知,修改这些细节参数,只要添加必要的java启动变量即可。

热点排行