`
AllenZhang
  • 浏览: 52930 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JDK6 Http server的设置

    博客分类:
  • java
阅读更多

地球人都知道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启动变量即可。

分享到:
评论

相关推荐

    jdk 内存设置jdk内存设置

    在 Windows Server 2003 系统上,使用 JDK5.0,最大可设置为 1478m。 在设置堆大小时,需要考虑多方面的因素,例如操作系统、物理内存、虚拟内存等。典型的堆大小设置为:-Xmx3550m -Xms3550m -Xmn2g -Xss128k。...

    java jdk1.8 连接sqlserver数据库使用的扩展jar包-sqljdbc42

    Java JDK 1.8 连接SQL Server数据库时,需要用到特定的驱动程序,这个驱动程序通常以JAR包的形式提供。在本例中,我们关注的JAR包是`sqljdbc42.jar`,它是微软官方提供的SQL Server JDBC驱动的一个版本,特别针对JDK...

    Windows server 2019安装JDK.docx

    Windows Server 2019 安装 JDK 详细指南 Windows Server 2019 是一款功能强大且稳定的操作系统,对于企业级应用和开发环境非常友好。然而,在安装 JDK 时,可能会遇到进度条卡住的问题,无法继续安装。本文将详细...

    基于jdk8的SQLSERVER 连接驱动.rar

    在本案例中,我们关注的是"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支持麒麟,arm、jdk1.8”揭示了这款名为ServerAgent的软件工具的最新版本2.2.3,它具有对多种平台和环境的兼容性。其中,“麒麟”指的是中国的开源操作系统,通常基于Linux内核,专为服务器...

    jdk 环境变量 Apache SqlServer

    jdk安装 环境变量配置 Apache SqlServer安装步骤

    jdk6绿色免安装版

    1. **改进的编译器**:JDK 6引入了新的编译器“Client Compiler”和“Server Compiler”,提高了代码的编译速度和优化效果。 2. **动态代理**:新增了java.lang.reflect.Proxy类和java.lang.reflect....

    jdk 6u5 for windows

    安装过程中,用户可以选择安装路径,并设置环境变量,特别是`JAVA_HOME`,指向JDK的安装目录。此外,还需要在Path变量中添加JDK的bin目录,确保系统能够从命令行访问Java工具。正确配置后,开发者可以通过运行“java...

    jdk1.6无法使用安全套接字层(SSL)加密连接sqlserver数据库

    解决jdk1.6连接sqlserver:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。内含readme文档。根据大神源码打包,本人项目使用无问题,如果对你有帮助的话可以给个好评。

    JDK 6 中文帮助文档

    7. **JVM优化**:JDK 6的JVM(Java Virtual Machine)进行了多方面的优化,包括更快的启动速度、更好的垃圾回收策略以及更高效的编译器(如Client Compiler和Server Compiler),从而提高了整体性能。 8. **XML处理...

    tomcat6.0.48+jdk1.7或jdk1.8或jdk1.6

    Tomcat 6.0.48是Tomcat 6系列的一个稳定版本,支持Java Servlet 2.5和JavaServer Pages (JSP) 2.1规范。它包含了用于处理HTTP请求的Servlet容器,以及用于呈现动态内容的JSP引擎。在该版本中,Tomcat已经经过了充分...

    linux 部署系统jdk6 tomcat6安装配置 oracle11g中文显示乱码

    - 使用`chmod 777 jdk6.bin`设置权限。 - 执行`./jdk6.bin`进行安装。 - 使用`su - root`切换到root用户。 3. **环境变量配置**: - 编辑`/etc/profile`文件,添加以下内容: ``` JAVA_HOME=/home/oracle/jdk...

    jdk-6u20-windows-x64.exe

    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...

    centos6.7安装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

    框架 eclipse + jdk1.8 or jdk14 + swing + sql server 管理员用户密码 admin 123456 模块介绍 管理员 登陆模块 器材管理模块 消防员管理模块 密码重置模块 关于系统模块 退出模块 数据库设计 使用的数据库是...

    SqlServer迁移至oracle所需jdk6

    标题中的“SqlServer迁移至Oracle所需jdk6”指出,这个压缩包包含了进行数据库迁移过程中可能需要的Java Development Kit(JDK)版本6,主要用于运行Oracle的SQL Developer工具。SQL Developer是Oracle公司提供的一...

    jdk8-windows server版本.tar.gz

    6. `conf`:配置文件,如`java.security`用于设置安全策略。 7. `legal`:包含许可和版权信息。 安装和配置JDK 8u271在Windows Server上时,需要将`bin`目录添加到系统路径,以便于命令行使用Java工具。同时,为了...

    jdk-6u45-x64

    1. 动态编译(Client/Server Compiler):JDK 6引入了改进的编译策略,能够在运行时动态优化代码,提高程序运行速度。 2. 动态代理(Dynamic Proxies):提供了更灵活的接口实现方式,方便实现如AOP(面向切面编程)...

    Windowssever 2016 连sqlsever的jar包 JDK1.7/1.8 sqljdbc41/sqljdbc42

    安装完成后,设置好`JAVA_HOME`环境变量指向JDK的安装目录。 2. **下载JDBC驱动**:从微软官方网站下载适用于你的JDK版本的`sqljdbc41.jar`或`sqljdbc42.jar`。 3. **配置类路径**:将下载的JDBC驱动添加到系统的...

Global site tag (gtag.js) - Google Analytics