`
mabusyao
  • 浏览: 253286 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
本来想自己写的,结果在网上找到别人写的,概括的非常详细,就直接转过来了:   Tomcat中提供了多种处理Socket的实现:JIoEndpoint、AprEndpoint和NioEndpoint。其中JIoEndpoint是最常见的一种实现方式。   JIOEndpoint中的线程有3部分:Socket侦听线程、监控线程和Executor。   Socket侦听线程 该线程由内部类Acceptor实现其Runnable接口,使用JDK的ServerSocket类监听某个端口,当socket连接进来时,构建一个task,交给Executor来处理。   监控线程 该线程由As ...
类名 org.apache.catalina.Connector.Conector 继承关系 LifecycleMBeanBase 关联类 ProtocolHandler Adapter AbstractEndPoint Handler Processor 实现功能 监听Request,assgin给恰当的Processor,返回Response     分析 Connectorš
  类名 org.apache.catalina.core.StandardService 继承关系 LifecycleMBeanBase Service 关联类 Container Connector Excecutor 实现功能 管理子组件         分析 从这节开始,我们就真正进入了对开发人员来说至关重要的一些内容,Connector,Container以及Excecutor。而所有这些,都是被StandardService类管理和维护的。
类名 org.apache.catalina.core.AprLifecycleListener 继承关系 LifecycleListener 关联类 org.apache.tomcat.jni.Library org.apache.tomcat.jni.SSL 实现功能 检查是否具有 APR/native 库,如果有则将其加载         分析   在StandardServer ...
类名 StandardServer 继承关系 LifecycleMBeanBase Server 关联类 NaingResources PropertyChangeSupport Service 实现功能 管理Service及全局的resources       分析  
实在是无法可想,你能预测事情的发展方向,却无法预测人心。   在此之中,如何保持内心的平和,是一件很有挑战性的事情。
    类名 Catalina 继承关系                           无 关联类 StringManager Server Digester 实现功能
类名 Bootstrap 继承关系                           无 关联类 Catalina ClassLoaderFactory MBeanServer 实现功能 创建Tomcat的classLoader机制 代理Catalina方法调用 初始化全局变量CATALINA_HOME_PROP 和 CATALINA_BASE_PROP     分析     Tomcat启动 Tomcat中共有两个类用于Server的启动,Bootstrap和Catalina。作为Bootstrap的主要工作,是代理Ca ...
从前辈那里转过来的:
之前做的一个项目中,有一些对异常处理的封装,如果抛出的异常是项目特定的异常,则直接抛出。如果不是,则进行一个封装。 现在的做法是这样的: catch (InputValidationFault ive) { throw new InputValidationFault(ive.getMessage(), ""); } catch (InputLimitFault ile) { throw new InputLimitFault(ile.getMessage(), ""); } catch (SystemUnavailableFault ...
JMX中有两种方式调用另一个MBean中的方法 先创建一个MBean实例,再调用该方法 HelloWorldMBean hwmbean = (HelloWorldMBean)server.instantiate("com.acxiom.bilyao.HelloWorld"); hwmbean.sayHello(); 直接调用该方法: ObjectName on = new ObjectName("HelloAgent:name=helloworld"); server.invoke(on, "sayHello2", ...
废话不多说,上代码: HelloWorldMBean接口 package com.acxiom.bilyao; public interface HelloWorldMBean { public void setGreeting(String greeting); public String getGreeting(); public void sayHello(); } HelloWorld package com.acxiom.bilyao; import javax.management.Notification; impo ...
我们常常会遇到这样的情况,当程序运行结束的时候,要将一些资源连接进行清理,释放内存,或者是删除一些临时文件。通常这并不会有什么问题,我们只需要在程序的结束部分写上清理代码即可。 但当我们处在多线程的环境下时,我们并不能确切的知道,何时所有的线程都已结束工作,程序准备退出。 又或者我们的程序中有一些守护线程,需要通过特殊的命令才能停止。那么此时,我们如何才能保证当所有的线程都结束,程序退出的时候,我们的清理代码被执行呢? 在Java中,有一种非常简单的方法,通过给Runtime提供shutdown hook来实现这样的需求: try { // R ...
Tomcat中的connector负责将从客户端发出的请求封装成Request对象,再交由processor进行处理。 为了提高性能,connector内部实现了一个简单的多例模式来获取processor,在启动阶段,会有一定数量的processor提前被产生并保留在内存中,当需要时直接从内存中取。如果当前所有processor都被占用,则会继续产生新的processor并丢进内存缓存。 /** * The current number of processors that have been created. */ private int cur ...
老版Tomcat使用catalina作为其连接器和容器的架构,当一个request请求到达时,Tomcat会对其做一系列的封装,并传递给容器进行处理,处理完之后,又会有一些解析工作来获取相应的response。 这里简单的介绍一下request在catalina中的体系结构。 我们都知道当我们进行web开发时,一个servlet只会接收类型为HttpServletRequest的对象,并返回类型为HttpServletResponse的结果。两个类中分别包含了许多web开发人员需要调用的方法,通常这些方法足够使用。 然后作为web container,Tomcat还需要在request中保 ...
Global site tag (gtag.js) - Google Analytics