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

Tomcat的HttpConnector/HttpProcesser(tomcat源码学习)

 
阅读更多
先启动进程HttpProcesser,等请求到达后加入socket对象并执行process().tomcat5.5以及后续版本已经没有看到HttpProcesser对象了
package com.xly;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class HttpConnecter {
	
		public static void main(String... args){
			try {
				Socket sk=null;
				HttpConnecter hc=new HttpConnecter();
				HttpProcesser hp=new HttpProcesser(hc,sk);
				hp.start();
				ServerSocket socketserver=new ServerSocket(8888,60000);
				sk=socketserver.accept();
				hp.assign(sk);
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
		}

}


package com.xly;

import java.net.Socket;

public class HttpProcesser extends Thread{
	public boolean available = false;
	public boolean stopped = false;
	public Socket socket;
	public HttpConnecter httpconnecter;

	public HttpProcesser(HttpConnecter httpconnecter,Socket socket) {
		this.available = false;
		this.socket=socket;
		this.httpconnecter=httpconnecter;
	}

	public void setAvailable(boolean available){
		this.available=available;
	}
	
	private synchronized Socket await() {

		// Wait for the Connector to provide a new Socket
		while (!available) {
			try {
				wait();
			} catch (InterruptedException e) {
			}
		}

		// Notify the Connector that we have received this Socket
		Socket socket = this.socket;
		available = false;
		notifyAll();

		if ((socket != null))
			System.out.println("The incoming request has been awaited");

		return (socket);

	}

	synchronized void assign(Socket socket) {

		// Wait for the Processor to get the previous Socket
		while (available) {
			try {
				wait();
			} catch (InterruptedException e) {
			}
		}

		// Store the newly available Socket and notify our thread
		this.socket = socket;
		available = true;
		notifyAll();

		if ((socket != null))
			System.out.println("An incoming request is being assigned");

	}
	
	public void process(Socket sockets)
	{
		System.out.println("process.run");
	}

	public void run() {

		// Process requests until we receive a shutdown signal
		while (!stopped) {
			System.out.println("Thread Run");
			// Wait for the next socket to be assigned
			Socket socket = await();
			if (socket == null)
				continue;

			// Process the request from this socket
			try {
				process(socket);
			} catch (Throwable t) {
				System.out.print("process.invoke");
			}

			// Finish up this request
//			connector.recycle(this);

		}

		// Tell threadStop() we have shut ourselves down successfully
	}
	

}
分享到:
评论

相关推荐

    mysql Connector/J 5.1.31 官网下载最新版

    mysql-connector-java-5.1.31.tar.gz mysql官网地址http://dev.mysql.com/downloads/connector/j/ (mysql-connector-java-5.1.31.tar.gz) MD5: f655c14dde5b9484bf705ef5d49b3b39 | Signature

    mod_jk各个版本 apache与tomcat 整合

    mod_jk 是 Apache Tomcat Connector 的一部分,用于在 Apache 和 Tomcat 之间传递请求。mod_jk 提供了多种版本,这些版本根据操作系统和 Apache 的版本进行了区分。以下是一些关键版本信息: - **Windows 平台**:...

    tomcat ssl单向/双向

    用户可能需要查看源码来了解Tomcat如何处理SSL连接,或者使用其中的脚本来自动化SSL证书的生成和配置。 总结来说,"Tomcat SSL 单向/双向"涉及到网络通信的安全性,涵盖SSL证书的配置、服务器和客户端的认证,以及...

    tomcat7源码

    《深入剖析Tomcat7源码》 Tomcat7是一款广泛使用的开源Java Servlet容器,它实现了Java EE中的...通过学习源码,我们可以了解到如何编写高效、健壮的服务器端代码,这对于任何Java开发者来说都是一笔宝贵的财富。

    tomcat6的源码

    这个源码包,"apache-tomcat-6.0.43-src",是Tomcat 6的官方源代码,非常适合开发者进行深入学习和自定义修改。以下是基于这个源码包的一些关键知识点: 1. **Servlet容器**:Tomcat作为Servlet容器,其主要任务是...

    Tomcat 接口文档 API

    3. **Connector**: 连接器组件是Tomcat接收和处理HTTP请求的部分。Tomcat通常有多个连接器,每个连接器可以配置不同的端口、协议和线程池。通过修改Connector的配置,可以优化服务器性能,例如设置最大连接数、超时...

    tomcat8源码

    Apache Tomcat 8.5.23 源码分析 Apache Tomcat 是一个开源的、免费的Web服务器和Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,...因此,对Tomcat源码的学习对于Java Web开发者来说是至关重要的。

    apache-tomcat-8.5.37-windows-x64.zip

    对于开发和测试环境,可以使用`startup.bat`启动Tomcat,然后通过浏览器访问`http://localhost:8080`来检查服务器是否正常运行。如果一切顺利,你应该能看到Tomcat的默认欢迎页面。 Tomcat 8.5版本引入了许多增强...

    tomcat源码

    《深入理解Tomcat:工作原理与源码剖析》 Tomcat作为一款开源的Java Servlet容器,是Apache软件基金会Jakarta项目的重要组成部分,广泛应用于各种Java Web应用的部署。本篇文章将深入探讨Tomcat的工作原理,并结合...

    tomcat5/tomcat5.5安装包

    【标题】"Tomcat5/tomcat5.5安装包" 涵盖了两个不同版本的Apache Tomcat服务器,即Tomcat 5.0和Tomcat 5.5。Tomcat是一个开源的、免费的应用服务器,主要用于部署和运行Java Servlets和JavaServer Pages(JSP)。它...

    jakarta-tomcat connector

    jakarta-tomcat connector linux环境

    tomcat源码学习之环境搭建

    在深入探讨Tomcat源码学习之前,我们首先要理解Tomcat是什么。Tomcat是一款开源的、免费的Web服务器和Servlet容器,由Apache软件基金会维护。它实现了Java Servlet和JavaServer Pages(JSP)规范,是Java EE应用...

    tomcat7源码下载

    《深入剖析Tomcat7源码》 ...通过对Tomcat7源码的深入学习,开发者不仅可以了解其工作原理,还能针对具体需求进行定制化开发,提高应用的稳定性和效率。下载并研究Tomcat7源码,对于提升Java Web开发技能大有裨益。

    Linux下Tomcat的安装-详细操作步骤

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="80" /> ``` 6. **创建临时目录**: - 在 `/opt/tomcat/` 目录下创建一个名为 `temp` 的子目录。 ```bash mkdir /opt/tomcat/temp `...

    Linux下Tomcat的安装

    如果希望Tomcat监听80端口而不是默认的8080端口,需要修改`server.xml`中的`<Connector>`元素,将port属性值改为80。同时,确保创建了`$TOMCAT_HOME/temp`目录,因为Tomcat运行时会用到这个临时目录。 完成以上步骤...

    apache tomcat6整合域名直接访问

    - 修改Tomcat的server.xml文件中的Connector标签,确保其监听的端口与JK配置相匹配。 - 添加或修改workers.properties文件,该文件通常位于Tomcat的conf/Catalina/localhost目录下。在这个文件中定义了JK的工作者...

    linux安装多个tomcat

    在Linux系统中安装多个Tomcat服务器是常见的需求,特别是在开发和测试环境中,为了隔离不同的项目或者版本,每个项目可能需要独立的Tomcat实例。本文将详细介绍如何在Linux上安装和管理多个Tomcat。 首先,我们需要...

    Linux 下 Tomcat安装(下载,解压,移动,配置TOMCAT_HOME)

    首先,我们需要下载Tomcat的源码包。Tomcat是由Apache软件基金会维护的开源Java Servlet容器,通常以.tar.gz或.zip格式提供。你可以访问其官方网站(https://tomcat.apache.org/),选择最新稳定版本进行下载。例如,...

    tomcat启动的错误

    ### Tomcat启动时遇到的错误解析 在进行SSH(Struts+Spring+Hibernate)框架整合的过程中,启动Tomcat服务器时常会遇到一些问题。这些问题如果不能及时解决,将会影响到项目的正常运行与部署。本文将对“tomcat启动...

Global site tag (gtag.js) - Google Analytics