`
easyhaohao
  • 浏览: 13701 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Tomcat4 默认连接器

阅读更多
删了很多,只留下了主要脉络,以便回忆TOMCAT如何做到多线程处理请求
    /**
     * The set of processors that have been created but are not currently
     * being used to process a request.
     */
    private Stack processors = new Stack();
    
    /**
     * The set of processors that have ever been created.
     */
    private Vector created = new Vector();


    /**
     * The current number of processors that have been created.
     */
    private int curProcessors = 0;



 /**
     * Create (or allocate) and return an available processor for use in
     * processing a specific HTTP request, if possible.  If the maximum
     * allowed processors have already been created and are in use,  
     * returnnull instead.
     **/
    private HttpProcessor createProcessor() {

        synchronized (processors) {
            if (processors.size() > 0) {
                // if (debug >= 2)
                // log("createProcessor: Reusing existing processor");
                return ((HttpProcessor) processors.pop());
            }
            if ((maxProcessors > 0) && (curProcessors < maxProcessors)) {
                // if (debug >= 2)
                // log("createProcessor: Creating new processor");
                return (newProcessor());
            } else {
                if (maxProcessors < 0) {
                    // if (debug >= 2)
                    // log("createProcessor: Creating new processor");
                    return (newProcessor());
                } else {
                    // if (debug >= 2)
                    // log("createProcessor: Cannot create new processor");
                    return (null);
                }
            }
        }

    }

    

    
    /**
     * Create and return a new processor suitable for processing HTTP
     * requests and returning the corresponding responses.
     */
    private HttpProcessor newProcessor() {

        //        if (debug >= 2)
        //            log("newProcessor: Creating new processor");
        HttpProcessor processor = new HttpProcessor(this, curProcessors++);
        if (processor instanceof Lifecycle) {
            try {
                ((Lifecycle) processor).start();
            } catch (LifecycleException e) {
                log("newProcessor", e);
                return (null);
            }
        }
        created.addElement(processor);
        return (processor);

    }


       /**
     * The background thread that listens for incoming TCP/IP
     *connections and
     * hands them off to an appropriate processor.
     */
    public void run() {

        // Loop until we receive a shutdown command
        while (!stopped) {

            // Accept the next incoming connection from the server socket
            Socket socket = null;
            try {
                //                if (debug >= 3)
                //                    log("run: Waiting on serverSocket.accept()");
                socket = serverSocket.accept();
                //                if (debug >= 3)
              
            } catch (Exception e) {
              continue;
            }

            // Hand this socket off to an appropriate processor
            HttpProcessor processor = createProcessor();
            if (processor == null) {
                try {
                     socket.close();
                } catch (IOException e) {
                    ;
                }
                continue;
            }
            //            if (debug >= 3)
            //                log("run: Assigning socket to processor " + processor);
            processor.assign(socket);    
        }

    }

分享到:
评论

相关推荐

    修改Tomcat默认访问根目录的方法

    server.xml位于Tomcat的conf目录下,是Tomcat的主要配置文件,负责配置服务器的各种特性,包括监听的端口、连接器、虚拟主机等。其中,元素用于配置虚拟主机的相关属性,而元素用于定义特定Web应用的属性。 要修改...

    apache tomcat 连接器

    5. **配置Tomcat服务器**: 在Tomcat的`server.xml`文件中,需要开启AJP连接器,指定监听端口(默认为8009),如: ```xml ``` 6. **重启服务器**: 完成以上配置后,需要重启Apache和Tomcat服务器使改动生效。 ...

    解决Linux下tomcat连接MySQL数据库

    这条语句表示给予`/var/lib/tomcat5.5/webapps/项目名称/`下的所有代码全权限(`AllPermission`),这将覆盖Java默认的安全策略,使得Web应用能够连接到本地的MySQL数据库。如果不确定应放入哪个`.policy`文件,可以...

    修改Tomcat默认编码消除get方式传递参数出现中文乱码

    ### 修改Tomcat默认编码以消除GET方式传递参数出现的中文乱码 在处理Web应用程序时,尤其是使用Apache Tomcat作为应用服务器的情况下,遇到中文字符乱码的问题是非常常见的。这一问题通常发生在通过GET方法传递含有...

    基于tomcat的连接数与线程池详解

    Tomcat连接器(Connector)是Apache Tomcat服务器的核心组件之一,负责接收客户端的连接请求,创建请求对象,将请求分派给处理请求的Servlet容器,并最终返回响应。在Tomcat的配置和性能优化中,了解如何设置连接数...

    解决tomcat配置ssl错误的解决办法

    其次,需要正确地配置 Tomcat 的 SSL 连接器。在 Tomcat 中,SSL 连接器是负责处理 SSL 加密连接的组件。需要正确地配置连接器的端口号、协议、证书文件和密码等信息。 再次,需要正确地配置 Tomcat 的 APR 模块。...

    Tomcat7.0 tomcat最新版本

    8. **NIO和APR连接器**:Tomcat 7.0提供了两种连接器选项,即NIO(非阻塞I/O)和APR(Apache Portable Runtime),用户可以根据需求选择更适合的连接器以优化性能。 9. **错误处理**:Tomcat 7.0改进了错误页面处理...

    how-tomcat-works(中文版).pdf

    ### 第4章:Tomcat的默认连接器 这一章重点讲解了Tomcat的默认连接器实现——HttpConnector类。分析了HTTP/1.1协议的新特性,如持久化连接、编码方式、状态码100的使用等。通过实例,读者可以学习如何创建...

    How Tomcat Works 中文版

    Tomcat5相较于Tomcat4,增加了对Servlet2.4和JSP2.0规范的支持,并且使用了更有效的默认连接器。Tomcat5的后台处理线程是共享的,相比于Tomcat4中每个组件都有自己的处理线程,Tomcat5能更高效地利用资源。此外,...

    tomcat7.0.53

    在使用Tomcat 7.0.53时,用户可能需要自定义`conf`目录下的配置文件来满足特定需求,例如调整服务器端口、设置访问日志、配置连接器等。同时,为了保证安全性,定期更新Tomcat至最新版本以获取最新的安全补丁是非常...

    Apache Tomcat8优化说明

    通过合理地配置 Tomcat 8 的连接器,可以极大地提高其处理能力和服务质量。开发者可以根据应用的特点和负载情况,选择合适的连接器类型和配置参数,以达到最佳性能。此外,对于安全性有较高要求的应用,还可以通过...

    apache+tomcat配置文件

    5. **连接器(Connector)配置**:在Apache的httpd.conf或独立的配置文件中,需要定义连接器来指定如何与Tomcat交互。例如,使用`ProxyPass`和`ProxyPassReverse`指令来定义路径映射。 6. **Session粘滞(Session ...

    tomcat源码解析

    #### 第4章 tomcat的默认连接器 本章深入探讨了Tomcat的默认连接器实现细节,包括HTTP/1.1的新特性及其对连接器的影响。 ##### 简介 Tomcat的默认连接器是一个高度可配置的组件,支持多种协议和配置选项。 #####...

    How Tomcat Works中文

    - **连接器性能**:相比于Tomcat 4,Tomcat 5提供了更为高效的默认连接器。 - **线程模型**:Tomcat 5采用共享的后台处理线程池,而Tomcat 4的每个组件都有独立的后台线程。这种改进提高了Tomcat 5的资源利用效率和...

    tomcat5/tomcat5.5安装包

    5.5版本还改进了连接器模块,支持HTTP/1.1协议的更多特性,比如持久连接和压缩传输,从而提高网络效率。 在解压这个"tomcat安装包"后,用户通常会找到以下几个关键文件夹和文件: 1. `bin`:包含启动、停止和管理...

    linux下tomcat优化设置最大连接数内存jconsole监控.docx

    ### Linux 下 Tomcat 优化设置最大连接数及内存 JConsole 监控 #### 一、Tomcat 内存优化 ##### 1.1 基本原理 在启动 Java 应用程序时,JVM(Java 虚拟机)会为应用程序分配一定的初始内存和最大内存。这些设置对...

    tomcat7源码下载

    Tomcat采用NIO(非阻塞I/O)或BIO(阻塞I/O)模型,Coyote连接器负责这部分实现。NIO模型在高并发环境下表现出色,因为它可以处理大量并发连接,而无需为每个连接创建新线程。 四、Tomcat7的部署与管理 Tomcat7...

    如何配置Tomcat的JVM虚拟机内存大小

    正确配置Tomcat的JVM内存和连接器参数,对于优化Web应用性能、提升用户体验至关重要。通过对`-Xms`、`-Xmx`等参数的细致调整,结合适当的垃圾回收策略,以及合理设置连接器参数,可以显著增强Tomcat服务器的稳定性和...

    59-Spring Boot内嵌Tomcat配置1

    通过自定义 `TomcatEmbeddedServletContainerFactory` 类,我们可以优化连接器协议、线程池设置等关键参数,从而提高应用的性能和稳定性。记得在配置时充分考虑应用的特点和预期的负载情况,以实现最佳的性能效果。

Global site tag (gtag.js) - Google Analytics