1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
1.背景介绍
Tomcat服务器
Tomcat是SUN公司推出的一个优秀的Servlet容器,由Apache、Sun 和其他一些公司及个人共同开发而成。
Tomcat本身完全用java语言编写。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
特点:
1、提供了可被服务器加载并执行的程序代码,并服务于来自客户端的请求。
2、Servlet不依赖浏览器,是允许在服务器端,所以不管浏览器是否支持java,都能请求访问servlet。
Resin服务器
Resin是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin同样也采用JAVA语言开发。
Resin提供了最快的jsp/servlets运行平台。在java和javascript的支持下,Resin可以为任务灵活选用合适的开发语言。
特点:
1、Resin包含了很多可靠的特性,包括服务器自动重启、检测并重启死锁的服务器、管理JVM内存以防止内存泄露等。
2、Resin可以将多个服务器作为一个服务器来对客户进行响应,从而增强服务器的扩展能力。
3、Resin可实现持久和分布的sessions:持久的session能够在服务器重启的时候保持现有的Http会话,分布式的session可以在多个服务器之间共享Http会话的状态。
Jetty服务器
Jetty是一个开源、基于标准、全功能实现的JAVA服务器,Jetty也是使用Java语言编写的,
它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行的Java应用提供网络和web连接。
特点:
1、Jetty嵌入比较便利,它设计之初就是作为一个优秀的组件来设计的,因此Jetty可以非常容易的嵌入到应用程序当中而不需要程序为了使用Jetty做修改。
2、Jetty是轻量的web服务器,一般来说,它的默认配置便可以满足日常大部分需求,
如果要完成较为复杂的功能,只需修改相关的xml文件。jetty的嵌入只需少量的代码就可以做到。
3、Jetty易拓展,有许多非常良好的接口,因此在Jetty的某种实现无法满足用户的需要时,用户可以非常方便地对Jetty的某些实现进行修改,使得Jetty适用于特殊的应用程序的需求。
2.知识剖析
Tomcat和Resin的区别
相同点:他们都是用java编写的,都是web服务器,并且支持集群部署。
不同点:
1、速度方面,Resin比Tomcat快2倍以上,不过Tomcat也很快,所以这个差别几乎感受不到。
2、开关机制上方面,Resin要比Tomcat好,比如修改了配置文件之后,Resin是会自动重启的,而Tomcat需要人工手动关闭并重启。
3、报错方面,Tomcat比较详细,一个小小的错误也会用大篇幅来描述,而Resin则相对简洁明确一些。
Tomcat和Jetty的区别
相同点:他们同样是用java编写,都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。
不同点:
1、架构方面,Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。
Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。
2、灵活性方面,Jetty更灵活,体现在其可插拔性和可扩展性,更易于开发者对Jetty本身进行二次开发,定制一个适合自身需求的Web Server。
相比之下,重量级的Tomcat因为本来就支持过多特性,要对其精简,比对jetty进行拓展都更难。
3、处理性能方面,Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。另外,Jetty在处理静态资源时,性能优于Tomcat。
3.常见问题
在线上服务应该选择哪一种WEB服务器?
4.解决方案
这些服务器各有优劣,选择服务器时应该先参考项目,预估规模大小等。比如大规模的企业级应用,Tomcat自身扩展了大量JEE特性可满足企业级应用的需求,
所以这种情况下应选用Tomcat。
5.编码实战
6.扩展思考
7.参考文献
http://blog.csdn.net/lihua2915/article/details/5997105
8.更多讨论
除了这几种服务器,还有哪些重要的服务器?
Jboss,weblogic,apache等。
可否使用nginx对这几种服务器设置均衡负载配置?
可以,nginx反向代理这几种服务器就行了。