地球人都知道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 2003 系统上,使用 JDK5.0,最大可设置为 1478m。 在设置堆大小时,需要考虑多方面的因素,例如操作系统、物理内存、虚拟内存等。典型的堆大小设置为:-Xmx3550m -Xms3550m -Xmn2g -Xss128k。...
Java JDK 1.8 连接SQL Server数据库时,需要用到特定的驱动程序,这个驱动程序通常以JAR包的形式提供。在本例中,我们关注的JAR包是`sqljdbc42.jar`,它是微软官方提供的SQL Server JDBC驱动的一个版本,特别针对JDK...
Windows Server 2019 安装 JDK 详细指南 Windows Server 2019 是一款功能强大且稳定的操作系统,对于企业级应用和开发环境非常友好。然而,在安装 JDK 时,可能会遇到进度条卡住的问题,无法继续安装。本文将详细...
在本案例中,我们关注的是"sqljdbc42.jar",这是一个适用于Java 8 (JDK 8)的SQL Server连接驱动。下面将详细讨论SQL Server JDBC驱动以及如何在JDK 8环境下进行配置和使用。 SQL Server JDBC驱动是由Microsoft提供...
标题“ServerAgent-2.2.3支持麒麟,arm、jdk1.8”揭示了这款名为ServerAgent的软件工具的最新版本2.2.3,它具有对多种平台和环境的兼容性。其中,“麒麟”指的是中国的开源操作系统,通常基于Linux内核,专为服务器...
jdk安装 环境变量配置 Apache SqlServer安装步骤
1. **改进的编译器**:JDK 6引入了新的编译器“Client Compiler”和“Server Compiler”,提高了代码的编译速度和优化效果。 2. **动态代理**:新增了java.lang.reflect.Proxy类和java.lang.reflect....
安装过程中,用户可以选择安装路径,并设置环境变量,特别是`JAVA_HOME`,指向JDK的安装目录。此外,还需要在Path变量中添加JDK的bin目录,确保系统能够从命令行访问Java工具。正确配置后,开发者可以通过运行“java...
解决jdk1.6连接sqlserver:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。内含readme文档。根据大神源码打包,本人项目使用无问题,如果对你有帮助的话可以给个好评。
7. **JVM优化**:JDK 6的JVM(Java Virtual Machine)进行了多方面的优化,包括更快的启动速度、更好的垃圾回收策略以及更高效的编译器(如Client Compiler和Server Compiler),从而提高了整体性能。 8. **XML处理...
Tomcat 6.0.48是Tomcat 6系列的一个稳定版本,支持Java Servlet 2.5和JavaServer Pages (JSP) 2.1规范。它包含了用于处理HTTP请求的Servlet容器,以及用于呈现动态内容的JSP引擎。在该版本中,Tomcat已经经过了充分...
- 使用`chmod 777 jdk6.bin`设置权限。 - 执行`./jdk6.bin`进行安装。 - 使用`su - root`切换到root用户。 3. **环境变量配置**: - 编辑`/etc/profile`文件,添加以下内容: ``` JAVA_HOME=/home/oracle/jdk...
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...
### CentOS 6.7 安装 JDK 1.8 的详细步骤 在 CentOS 6.7 上安装 JDK 1.8 是一项常见的任务,对于运行 Java...wget --no-check-certificate --no-cookies --header "Cookie:oraclelicense=accept-securebackup-cookie" ...
框架 eclipse + jdk1.8 or jdk14 + swing + sql server 管理员用户密码 admin 123456 模块介绍 管理员 登陆模块 器材管理模块 消防员管理模块 密码重置模块 关于系统模块 退出模块 数据库设计 使用的数据库是...
标题中的“SqlServer迁移至Oracle所需jdk6”指出,这个压缩包包含了进行数据库迁移过程中可能需要的Java Development Kit(JDK)版本6,主要用于运行Oracle的SQL Developer工具。SQL Developer是Oracle公司提供的一...
6. `conf`:配置文件,如`java.security`用于设置安全策略。 7. `legal`:包含许可和版权信息。 安装和配置JDK 8u271在Windows Server上时,需要将`bin`目录添加到系统路径,以便于命令行使用Java工具。同时,为了...
1. 动态编译(Client/Server Compiler):JDK 6引入了改进的编译策略,能够在运行时动态优化代码,提高程序运行速度。 2. 动态代理(Dynamic Proxies):提供了更灵活的接口实现方式,方便实现如AOP(面向切面编程)...
安装完成后,设置好`JAVA_HOME`环境变量指向JDK的安装目录。 2. **下载JDBC驱动**:从微软官方网站下载适用于你的JDK版本的`sqljdbc41.jar`或`sqljdbc42.jar`。 3. **配置类路径**:将下载的JDBC驱动添加到系统的...