tomcat最根本就是一个Socket Server,于是我找到了org.apache.tomcat.util.net.DefaultServerSocketFactory#createSocket(int port, int backlog),最终就是这个方法执行new java.net.ServerSocket(port, backlog)启动了一个ServerSocket实例。
查看ServerSocket API就发现@param backlog the maximum length of the queue.
明确了,tomcat的acceptCount就是ServerSocket的等待队列。
但设置的acceptCount怎么设置到backlog上呢,我翻了好一会儿代码才注意到org.apache.catalina.connector.Connector中有一个变态的HashMap通过这个HashMap把参数名做了一次转换,再赋值给Http11Protocol使用。这样的变态我想应该是想方便tomcat的使用者吧,毕竟整一个backlog参数谁知道是干什么的,另外这个HashMap也把其它参数名做了转换,代码如下
protected static HashMap replacements = new HashMap();
static {
replacements.put("acceptCount", "backlog");
replacements.put("connectionLinger", "soLinger");
replacements.put("connectionTimeout", "soTimeout");
replacements.put("connectionUploadTimeout", "timeout");
replacements.put("clientAuth", "clientauth");
replacements.put("keystoreFile", "keystore");
replacements.put("randomFile", "randomfile");
replacements.put("rootFile", "rootfile");
replacements.put("keystorePass", "keypass");
replacements.put("keystoreType", "keytype");
replacements.put("sslProtocol", "protocol");
replacements.put("sslProtocols", "protocols");
}
// ------------------------------------------------------------- Properties
/**
* Return a configured property.
*/
public Object getProperty(String name) {
String repl = name;
if (replacements.get(name) != null) {
repl = (String) replacements.get(name);
}
return IntrospectionUtils.getProperty(protocolHandler, repl);
}
/**
* Set a configured property.
*/
public boolean setProperty(String name, String value) {
String repl = name;
if (replacements.get(name) != null) {
repl = (String) replacements.get(name);
}
return IntrospectionUtils.setProperty(protocolHandler, repl, value);
}
总结:acceptCount参数其实就是new java.net.ServerSocket(port, backlog)的第二个参数,了解后再设置就不会盲目了。
myblog
分享到:
相关推荐
tomcat 最大并发数 并发量 tomcat 最大并发连接数 acceptCount不能说只要大于acceptCount的连接就一定被拒绝!
图解 Tomcat maxConnections、maxThreads、acceptCount
maxSpareThreads 指定了一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的线程,acceptCount 指定了可以放到处理队列中的请求数。 四、Tomcat 部署方式 Tomcat 有多种部署方式,包括 WAR 文件部署、EAR 文件...
在Linux环境下,将Cronolog解压缩并放置在适当目录后,可以在Tomcat的启动脚本`catalina.sh`中配置Cronolog的命令,使其在Tomcat运行时动态地处理日志输出。 2. 如何配置Cronolog: 在`catalina.sh`中,通常会找到`...
1. 加大 Tomcat 连接数:在 Tomcat 配置文件 server.xml 中的 <Connector ... /> 配置中,有多个参数可以影响连接数,例如 minProcessors、maxProcessors 和 acceptCount。其中,maxProcessors 和 acceptCount 两个...
标题“tomcat8.5(修改端口号为‘8888’)”涉及的核心知识点是关于Apache Tomcat服务器的端口配置。Tomcat是一款广泛使用的开源Java Servlet容器,用于部署和运行Java Web应用程序。在默认情况下,Tomcat使用8080...
2. **Jasper**:Tomcat中的Jasper模块用于编译和执行JSP页面,将JSP转换为Java Servlet并在运行时执行。 3. ** Coyote**:Coyote是Tomcat的HTTP/1.1协议处理器,它处理客户端的HTTP请求并返回响应。 4. **Juli**:...
总结,解决Tomcat5中的中文问题,关键在于统一请求处理的字符编码,并确保服务器端和客户端的编码一致。通过上述两种方法,可以有效地解决POST和GET请求的中文乱码问题,实现中文数据的正常显示。
本篇文章将详细介绍如何在Tomcat中配置HTTPS证书认证,以便实现安全的Web服务。 首先,我们需要了解HTTPS的基本原理。HTTPS是在HTTP协议的基础上加入SSL/TLS(Secure Socket Layer/Transport Layer Security)协议...
指定了最大线程数为 600,minSpareThreads="100" 指定了初始化时创建的线程数为 100,maxSpareThreads="500" 指定了一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的 socket 线程,acceptCount="700" ...
在Tomcat中,通过配置Filter来统一处理字符编码是一种常见的方法。具体步骤如下: 1. **创建Filter类**: - 需要在项目中创建一个名为`SetCharacterEncodingFilter`的Filter类。 - 这个类的主要功能是设置请求的...
在这个主题中,我们将深入探讨"Tomcat中多线程对于Servlet处理"的相关知识点,特别关注在5.5.17版本中的实现。 1. **Tomcat的线程模型** Tomcat使用了一个基于Apache Commons Daemon的JVM服务模型,其中包含了...
copy standard_tomcat\webapps tomcat_instance_alpha\ copy standard_tomcat\work tomcat_instance_alpha\ copy standard_tomcat\temp tomcat_instance_alpha\ ``` 3. **修改端口配置** - 打开`tomcat_...
在IT行业中,安全通信是至关重要的,特别是在处理敏感数据时。HTTPS(Hypertext Transfer Protocol Secure)协议就是为了解决这一问题而设计的,它通过使用SSL/TLS协议加密HTTP通信,确保数据在传输过程中不被窃取或...
Apache Tomcat 是一个开源软件应用服务器,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。这个压缩包文件 "apache-tomcat-8.5.97-windows-x.zip" 包含了Apache Tomcat 8.5.97 版本在Windows...
在本文中,我们将详细介绍 Tomcat 6.0.6 的 SSL 配置步骤,包括生成密钥、导入证书、配置 server.xml 文件等。 首先,我们需要生成密钥。我们可以使用 Keytool 工具来生成密钥。Keytool 是 Java Development Kit ...
在本文中,我们将深入探讨Tomcat 8.5版本的学习要点,包括其工作原理、配置与优化,以及在实际开发中的应用。 首先,理解Tomcat的运行机制至关重要。Tomcat主要由Catalina、Jasper、 Coyote和Juli四个核心组件构成...
* acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值为 10。 * connectionTimeout:网络连接超时,默认值为 20000 毫秒,单位为毫秒...
2. **Web应用部署**:在Tomcat中,Web应用通常以WAR(Web ARchive)文件的形式部署。开发者可以通过将WAR文件复制到`webapps`目录或使用管理工具进行部署。 3. **Context配置**:每个Web应用对应一个Context,定义...