地球人都知道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启动变量即可。
分享到:
相关推荐
Windows server 2019 64位操作系统安装jdk时安装jre进度条卡住,等待很长时间也不继续
基于jdk8的sqlserver连接驱动 sqljdbc42.jar
jdk安装 环境变量配置 Apache SqlServer安装步骤
解决jdk1.6连接sqlserver:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。内含readme文档。根据大神源码打包,本人项目使用无问题,如果对你有帮助的话可以给个好评。
压缩包中包含两个文件,分别是jre7和jre8,分别用于jdk1.7和jdk1.8,我用的是1.8,肯定没问题,1.7没试过
JDK6的新特性之一:Desktop类和SystemTray类 JDK6的新特性之二:使用JAXB2来实现对象与XML之间的映射 JDK6的新特性之三:理解StAX ...JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,
框架 eclipse + jdk1.8 or jdk14 + swing + sql server 管理员用户密码 admin 123456 模块介绍 管理员 登陆模块 器材管理模块 消防员管理模块 密码重置模块 关于系统模块 退出模块 数据库设计 使用的数据库是...
JDK6的新特性之五_轻量级HttpServer JDK6的新特性之七_用Console开发控制台程序 JDK6的新特性之八_嵌入式数据库Derby JDK6的新特性之六_插入式注解处理API JDK6的新特性之九_CommonAnnotations JDK6的新特性...
jdk-6u20-windows-x64.exe linx64位下载: 第1部分:http://download.csdn.net/detail/love254443233/5263081 第2部分:http://download.csdn.net/detail/love254443233/5263160 附:java配置方法.txt 1:找到JDK...
ThinServer是基于JDK提供的HttpServer开发的Web服务容器和以socket开发的ftp server,体积小。仅43K大小。提供windows,linux启动、停止脚本。Http应用开发简单只需要实现...
这个是Linux+JDK+WebLogic Server+ Oracle 的安装配置过程 本来还有视频教程太大了 发不上来 适合复杂环境搭建的用户学习使用
divine@ubuntu:~$sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.5.0_22/bin/java 300 divine@ubuntu:~$sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.5.0_22/...
jdk1.8.0_202.rar xp 32位解压即用包 XP安装jdk8闪退,解决如何在XP安装JDK8
http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA-jdk6.zip/download 3.配置JBOSS环境变量 JBOSS_HOME=D:\jboss-5.1.0.GA 然后在path中添加 ;%JBOSS_HOME%\bin; 4.测试安装...
JAVA开发必备环境配置,tomcat jdk SqlServer2005
上传文件目录为:/home/ut/java/,cp当前目录下jdk-6u30-linux-i586.bin到/usr/lib/jdk/,chmod 777 jdk-6u30-linux-i586.bin jdk安装路径:/usr/lib/jdk/jdk1.6.0_30 配置环境变量: sudo vi /etc/environment ...
jdk8u271服务器专用版本,适合windows server2008 2012等
libsigar-aarch64-linux ServerAgent-2.2.3支持麒麟 支持arm芯片、jdk1.8 实测能用
JDK6安装包(jdk-6u45-windows-x64.exe),适用于windows 64位