Webserver/servlet容器选型

最新在做一个企业级项目,在讨论到servlet容器的选择问题。

关于概念

有个概念必须要搞清楚。什么是web容器?详见维基百科

简而言之,web容器就是带有servlet容器的webserver。所以我很不喜欢web容器这个词语,web本身没有什么容不容器的概念,容器是针对servlet而言。也就是说,必定是java语言的。

在php等世界,就只有webserver了,因为它们是脚本语言,没有从jsp编译为servlet的过程。Apache Httpd就是webserver,但它不能解析JSP,但可以与Tomcat一起使用(它负责http,tomcat负责servlet);当然,Tomcat(同时负责http与servlet)独立使用也可以。

也就是说web服务器是解决http层的,servlet容器是解决servlet层的。

格外在说一句,有个同事把Weblogic称为Web容器(在专业文档中),我个人觉得很不专业。首先,Weblogic是一个webserver;同时,它也是一个servlet容器;而且,它还是一个EJB容器。说明的词语不怕多,在正式的文档里要专业。

甲方谢工

在选型讨论会上,谢工主张要选择商业产品,比如oracle的weblogic。理由是:

1. 功能强大

2. 出了问题可以花钱买专业服务解决

甲方某人

忘了是谁,说用JBoss。

乙方董工

乙方的董工等几人力荐Tomcat。理由是:

1. Tomcat开源,产品已很成熟

2. 免费

甲方晓东

他负责硬件侧购买,但也说不清楚Weblogic的价格。因为License基本总部都买好了,费钱的地方在于格外的其他很多细微地方

我的意见

  1. 无论是Oracle的Weblogic还是IBM的Websphere,都是不能用的,甲方很熟悉Weblogic,没用过Websphere,但我是两个都用过。它们就是两个黑匣子,出了问题无从查起。虽然我建议公司买了本weblogic的书籍,但也只是杯水车薪。最关键的是服务很贵。
  2. JBoss是想都不用想就否决的。JBoss最大的优势是支持EJB,但是现在谁还用EJB?虽然开源免费,但社区也不怎么样了现在。
  3. Tomcat是可以重点考虑的,还需要与Jetty、Resin等权衡抉择,不能拍脑袋。简单来说是企业级应用可以考虑tomcat,互联网云可以考虑Jetty。所以这个项目Tomcat是比较适合的
  4. 而且不光是Tomcat就能搞定,还得考虑Nginx等负载均衡。

可参考资料:

最后,还有一个很重要的问题,用Tomcat的话,扩展的功能和故障解决怎么处理?

这个问题我是这么看的:

1. 其实Weblogic的全部的功能,是不可能都用到的,与其购买用不到的功能为何不需要什么功能就在Tomcat上扩展呢?

2. 故障的解决确实需要技术的积累,但为何你愿意花钱每次够购买别人昂贵的服务而不愿意花钱招聘、培养自己的核心技术人员呢?

3. 如果这个项目非常着急上线,则可以采用先购买Weblogic,然后逐步采用Tomcat替换。但,根据我对甲方如果是大型国企/政府部门的了解,项目上线了基本就万事大吉很难找到有后续的人跟进了。

2015.4.1

时间: 2024-10-24 10:48:08

Webserver/servlet容器选型的相关文章

SpringBoot源码学习系列之嵌入式Servlet容器

1.前言简单介绍 SpringBoot的自动配置就是SpringBoot的精髓所在:对于SpringBoot项目是不需要配置Tomcat.jetty等等Servlet容器,直接启动application类既可,SpringBoot为什么能做到这么简捷?原因就是使用了内嵌的Servlet容器,默认是使用Tomcat的,具体原因是什么?为什么启动application就可以启动内嵌的Tomcat或者其它Servlet容器?ok,本文就已SpringBoot嵌入式Servlet的启动原理简单介绍一下

web容器与servlet容器

1. web容器好比   电视机 servlet容器好比   VCD 没有VCD你可以看电视,对吧,但是有了VCD没有电视机,你从哪看起?:) 没有servlet容器,你也可以用web容器直接访问静态页面,比如安装一个apache等,但是如果要显示jsp/servlet,你就要安装一个  servlet容器了,但是光有servlet容器是不够的,因为它要被解析成html输出,所以你仍需要一个web容器. 大多数servlet容器同时提供了web容器的功能,也就是说大多servelt可以独立运行你

Web服务器(Apache)与Servlet容器(Tomcat)

之前一直比较迷惑Apache与Tomcat的关系,通过查询资料,有所了解,现记录于此. Apache与Tomcat 两者定位:Apache是HTTP Web服务器,Tomcat是Web容器. 有一个非常形象的比喻:Apache是一辆车,可以装载静态的物件(HTML静态网页等):但不能装动态的水(JSP.CGI等),要装水就需要桶(容器),当然桶也可以不放在车上而单独存放,则该容器即为Tomcat. 两者的主要区别: Apache是世界上最流行的Web服务器(其次是微软的IIS),可以处理浏览器的

探秘Tomcat——一个简易的Servlet容器

即便再简陋的服务器也是服务器,今天就来循着书本的第二章来看看如何实现一个servlet容器. 背景知识 既然说到servlet容器这个名词,我们首先要了解它到底是什么. servlet 相比你或多或少有所了解.servlet是用java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者. 容器 容器的概念很大,在这里

web容器和servlet容器

1. web容器好比   电视机servlet容器好比   VCD没有VCD你可以看电视,对吧,但是有了VCD没有电视机,你从哪看起?:) 没有servlet容器,你也可以用web容器直接访问静态页面,比如安装一个apache等,但是如果要显示jsp/servlet,你就要安装一个  servlet容器了,但是光有servlet容器是不够的,因为它要被解析成html输出,所以你仍需要一个web容器. 大多数servlet容器同时提供了web容器的功能,也就是说大多servelt可以独立运行你的w

Spring 4 官方文档学习(十一)Web MVC 框架之编码式Servlet容器初始化

在Servlet 3.0+ 环境中,你可以编码式配置Servlet容器,用来代替或者结合 web.xml文件.下面是注册DispatcherServlet : import org.springframework.web.WebApplicationInitializer; public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(

Servlet容器container

通俗点说,所谓容器,就是放东西的地方.Servlet容器自然就是放Servlet的地方.J2EE开发,是有分工的.一般的程序员,写得都是应用开发,我们会按照一定的规则,开发我们的系统,比如用Servlet开发,我们就要按照Servlet的规则写代码. 那么我们写的代码就是在Servlet容器中运行.容器会按照规则加载类,并运行它. 有一部份程序员就是写容器的,如Tomcate就是web容器.tomcat就是一个Servlet容器. servlet容器基本概念:1,Tomcat是Servlet的运

servlet容器开发要点

v1 是一个http服务器. v2 是一个servlet容器, 可以提供servlet的服务.   =>  动态load servlet字节码,并运行它( 按生命周期). servlet容器它来控制servlet的生命周期. Servlet类必须要实现一个接口  Servlet , 提供所有的Servlet都要有的方法( 生命周期) 对于要处理的资源有两种: 静态资源/动态资源.    定义一个接口,写两个实现. 动态资源:     http://localhost:8888/servlet/h

日志系统数据采集客户端的实现--并发编程容器选型

一个集中的日志系统,第三方应用每次写日志,都需要发送一个远程的rpc或者http请求,造成写日志的延时比较大. 改进的做法是:提供一个写日志调用包,第三方应用写日志时,先把日志缓存到一个线程安全的容器里,然后后台线程实时消费容器内的日志,如果有持久化的需求,就可以实时的把日志flush到文件中,然后再用另外一个线程消费文件真正把日志发送到日志服务器. 所以我们需要一个线程安全的容器,以下是常见的并发编程容器. CopyOnWriteArrayList是线程安全的, 且处理读操作不需要进行同步和加