最新在做一个企业级项目,在讨论到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基本总部都买好了,费钱的地方在于格外的其他很多细微地方
我的意见
- 无论是Oracle的Weblogic还是IBM的Websphere,都是不能用的,甲方很熟悉Weblogic,没用过Websphere,但我是两个都用过。它们就是两个黑匣子,出了问题无从查起。虽然我建议公司买了本weblogic的书籍,但也只是杯水车薪。最关键的是服务很贵。
- JBoss是想都不用想就否决的。JBoss最大的优势是支持EJB,但是现在谁还用EJB?虽然开源免费,但社区也不怎么样了现在。
- Tomcat是可以重点考虑的,还需要与Jetty、Resin等权衡抉择,不能拍脑袋。简单来说是企业级应用可以考虑tomcat,互联网云可以考虑Jetty。所以这个项目Tomcat是比较适合的
- 而且不光是Tomcat就能搞定,还得考虑Nginx等负载均衡。
可参考资料:
最后,还有一个很重要的问题,用Tomcat的话,扩展的功能和故障解决怎么处理?
这个问题我是这么看的:
1. 其实Weblogic的全部的功能,是不可能都用到的,与其购买用不到的功能为何不需要什么功能就在Tomcat上扩展呢?
2. 故障的解决确实需要技术的积累,但为何你愿意花钱每次够购买别人昂贵的服务而不愿意花钱招聘、培养自己的核心技术人员呢?
3. 如果这个项目非常着急上线,则可以采用先购买Weblogic,然后逐步采用Tomcat替换。但,根据我对甲方如果是大型国企/政府部门的了解,项目上线了基本就万事大吉很难找到有后续的人跟进了。
2015.4.1