`
smartvessel
  • 浏览: 80678 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
举例的情况: debug level的信息——输出到console error level的信息——输出到文件中   log4j的配置信息:   参数Threshold,举例Threshold设置成warn,那么低于warn的level,都可以在用这个appender输出。 <appender name="OutInfo" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="W ...
Eclipse用户总是在NetBeans炫耀Eclipse是多么的漂亮,尤其会说NetBeans的字体丑陋,NetBeans的字体太小,编辑器里的字体不好看,字体边楞有锯齿等等。坦白的说,这也是我刚从Eclipse转到NetBeans的第一印象。其实由于NetBeans使用Swing构建界面,这使得它缺省的使用Swing的缺省配置,尤其是中文,就更不敢恭维。其实NetBeans提供了强大的配置工具,完全可以将NetBeans配置的很漂亮。下面我就以Windows上的NetBeans安装为例,说说如何配置字体。          1.NetBeans界面上的普通字体大小,可以通过配置NetBe ...
                 实现 container←-----containerBase     ↑                          ↑     |继承                    |继承     |                          |     |         实现       ...
tomcat打开endpoint的监听对通过某种协议,通常下是http的信息进行解析,组装成request,接着给Http11Protocol(ProtocolHandler)和Http11Processor处理。 adapter.service(request, response);   connector.getService().getContainer().getPipeline().getFirst().invoke(request, response);  最终选择具体的Valve类处理request并生成response。 Valve和Pipeline的关系:Pipeli ...
Enumeration枚举,就是要把内容没有重复的遍历,而且不破坏原有的存储空间。在http headers的实现中,tomcat实现了一些枚举类。 Enumerate the distinct header names. Each nextElement() is O(n)   class NamesEnumerator implements Enumeration<String> { ...
Implementation of InputBuffer which provides HTTP request header parsing as well as transfer decoding   socket能获得客户端发来的http协议,tomcat需要对http协议(传输的是byte流)进行解析,例如获得http的method,protocol,URI等信息. 既然是对byte流进行处理,tomcat封装了InternalInputBuffer。 public class InternalInputBuffer extends AbstractInputBuffer   ...
tomcat开启socket的accept线程后,其实要做的主要工作是交给worker线程去完成的,这其中使用了线程池的技术。 如: try { SocketWrapper<Socket> wrapper = new SocketWrapper<Socket>(socket); wrapper.setKeepAliveLeft(getMaxKeepAliveRequests()); getExecutor().execute(new SocketProcessor(wrapper)); ...
tomcat中ServerSocket线程监听是否有socket连接,如果有就转而处理。这个过程类似于你向tomcat发送一个URL请求,实质这个请求转换成http协议,通过socket发出来。 先看ServerSocket的封装主要为 public abstract class ServerSocketFactory implements Cloneable   class DefaultServerSocketFactory extends ServerSocketFactory { DefaultServerSocketFactory () { /* ...

java多态集锦

多态带来的方法调用顺序 (1) 方法调用优先级由高到低:         this.method(O)--->super.method(O)---->         thismethod((super)0)----->super.method((super)0)     (2)SupeerClass sub = new SubClass():情况的讨论     1) 对象sub向外暴露的接口全部为超类/父类中的方法,而SubClass中的特有的方法将  被“屏蔽”;     2) 若SubClass中重写了SuperClass中的方法,则在调用该方法时,父 ...
每个应用都有生命周期lifecycle,可能包括init,start,stop,destroy等更多。针对生命周期的变化,如何做变化作出反应,tomcat在设计的时候,把时间监听listener结合起来,所以listener取的名字是lifecyclelistener,对lifecycle进行监听。 总的最底层的来自两个interface的设计Lifecycle和LifecycleListener。 lifecycle这个接口定义了除本身生命周期的函数,另外还定义了整个生命周期阶段的事件类型(这个肯定是为lifecyclelistener准备的),同时还对LifecycleListener有 ...
这里说下tomcat对DynamicMBean的实现和封装。利用tomcat包,可以轻松实现将自己的对象注册为MBeans。 看个例子就明白了。 package com.MBean.test; import org.apache.tomcat.util.modeler.BaseNotificationBroadcaster; public class DyMBeanObj extends BaseNotificationBroadcaster{ public int getConnectionNumber() { return this.conNum ...
先说JMX,The JMX technology provides a simple, standard way of managing resources such as applications, devices, and services. JMX是为了管理资源产生的,这个资源包括应用、设备和服务等。取个例子,如果你写了一个应用,初始化了20个的数据连接数,当你的应用还在跑的时候,发觉这个连接数少了,你要增加这个参数。JMX提供不需要停机,动态的管理连接数的方法。 先从简单的Standard MBeans看起。 通常我们先定义interface 第一步:MBean Interf ...
Server的中的初始化基本核心在StandardServer中,下面的代码 protected void initInternal() throws LifecycleException { super.initInternal(); // Register global String cache // Note although the cache is global, if there are multiple Servers // present in the JVM (may ha ...
getServer().init()其实就是调用server的init函数,但是server是个interface,还要看其在new的时候,这个就是多态。   digester.addObjectCreate("Server", "org.apache.catalina.core.StandardServer", "className"); digester.add ...
接下来tomcat要load了,看下面一些程序片段 public void load() { long t1 = System.nanoTime(); initDirs(); initNaming(); Digester digester = createStartDigester(); ........ digester.push(this); digester.parse(inputSource); ........ get ...
Global site tag (gtag.js) - Google Analytics