写在前面:使用jetty已经很久了,它是一个很出色的web容器和工具,特在此和大家分享jetty6的知识。网络上有一些关于jetty的资料,但过去陈旧且不具有系统性,导致很多人误解jetty的功能,国外目前也没有关于jetty的书籍,所以那些搞翻译的人也没有翻译来源,故决定写一本关于jetty6的书,以推广jetty在国内的使用。记住jetty不仅仅是一个web容器!
版权声明:这一系列章节只在javaeye的博客发表,谢绝任何组织和个人的转载或抄袭!本人保留所有权利!如侵犯本版权则需赔偿人民币5000000圆整,因为劳动是无价的,这算便宜的了!
作者:陈汝烨 ?
?
?
由于这一些系列文章正在编写过程中,写好一章就发一章,难免有很多错误的地方,欢迎哥们指正!
?
?
?? ? ? 该类Handler可以选择在交给另外一个Handler对象调用前或后来处理Request和Response。这些类都继承自HandlerWrapper类,如图2.4中展示的。大家会注意到Server类也是一个装饰模式Handler,其实在Server代理了所有其他的Handler,是所有Handler的入口。HandlerWrapper中的setHandler方法便是用来设定被代理Handler对象的,这个方法在以后大家会经常用到。另外装饰器模式还运行将多个Handler串联起来使用。
?
?? ?3.集合类Handler
?? ? ? ? ? ?该类Handler的作用是讲请求分发给其他Handler处理,分发策略由各自实现类决定。常用集合类Handler有 HandlerCollection、HandlerList、ContextHandlerCollection。?? ?
?
?? ?关于ThreadPool,Jetty为我们提供了两个实现版本:org.mortbay.thread.concurrent.ThreadPool和org.mortbay.thread.QueuedThreadPool。当j2se是1.5以上版本是我们选择ThreadPool的实现。ThreadPool存在的目的是因为线程的创建是非常昂贵的操作,所以使用Pool技术以便重复使用以创建的线程。
ThreadPool的大致工作方式是:如果存在一个空闲线程,则让它去执行请求处理。如果不存在且没有达到设定的{zd0}线程数,那么就新建一个Thread去执行请求处理。如果已经达到{zd0}线程数,那么就将工作任务放到队列里面排队,等到有空闲线程时再执行任务。
?
?