如果您今天启动了一个新的Java EE项目,该项目将在大约一年内完成,您会选择哪个应用程序服务器?为什么?
你的部分答案应包括你的决定论据.您还可以选择使用Java EE服务器以及市场上其他可用服务器的经验.这些都很有趣,因为我们都对你的答案中的调查和思想有所了解.
在过去的10多年里,我使用过WebLogic,WebSphere,JBoss,GlassFish,Resin,Jetty,Tomcat等等.所以,如果我正在考虑一个新项目,我会首先问自己一些问题.我不再质疑的一件事是,我会拒绝使用JSP,除非我受到折磨,直到我为我的妈妈哭泣.
由于某人的授权,我是否必须与特定产品兼容/部署?有没有办法忽视它们或说服别人呢?如果是这样,那就是你的答案.
我必须使用EJB吗?真?尽可能避免使用它们 - 它们实际上只需要非常大的企业级系统.请记住,它们只是工具,而且很大(有人会说"金大锤"吗?).他们严重过度使用,所以真的,真的质疑你是否需要它们.如果你确实需要它们,那么你会删除几个选项,包括我最喜欢的Jetty.
您是否必须使用任何其他主要的J2EE技术,如JMS,ESB等?如果是这样,你真的离不开它,那么你又被限制在一个完整的J2EE容器中.例如,在你提交BPM之前仔细思考和调查,并且(几乎)以所有成本避免使用AquaLogic BPM - 这在极端情况下是丑陋的.
如果你真的必须使用一个完整的J2EE容器,首先考虑开源,因为它更强大,更好的支持,更具成本效益.他们拥有更大的客户群和更开放的支持互动,因此他们倾向于更快地获得更好的修复.但是,Resin还不成熟,相对于GlassFish或JBoss,我会避免它 - 我发现部署和支持有问题.我更喜欢JBoss,因为它具有更广泛的客户群,成熟度等.GlassFish更难融入自动构建/部署过程,但它可能更好用于某些特定功能(如果您需要它们).
我有特殊原因需要Apache吗?然后倾向于Tomcat,或许加上一些东西.
我可以只使用servlet吗?然后我会使用Jetty - 它是最轻,最快,最简单,最灵活的解决方案.如果我倾向于不能使用Jetty,我会质疑我所有的假设.YAGNI适用.
最好是在Jetty上使用StringTemplate/WebStringTemplate:一个干净,强大,快速,可维护的解决方案,没有许可费,可靠的声誉和支持等等.这就是我现在开始的地方.
大多数应用程序/系统选择许多花哨的J2EE功能,而他们真正需要的只是servlet和具有一些体面的架构/设计的JDBC.问你为什么认为自己需要更多.
在完整的容器中,我会避免使用WebLogic和WebSphere,除非你支持一个主要的公共网站(我现在的雇主的网站部署在WebLogic上,它每月点击量达到11万次,其他的则是可比的).WebLogic真正声名鹊起的是它们相对容易的集群,但是(几乎)所有成本都避免了它们的专有供应商锁定功能.WebSphere只是一个噩梦,我会不惜一切代价避免 - 我在过去完成一对夫妇后拒绝做涉及WebSphere的项目.这两种产品都不值得获得大量的许可费用,除非你真正有特殊需求推动使用专有功能.作为许多财富500强企业的高级建筑师/工程师,我十年来一直没有看到这样的需求.另一方面,
即使对于真正庞大,高流量的公共网站,专有产品仍然值得怀疑.我宁愿每年在一些优秀的硬件上花费数百万美元的许可费,也可以从一些非常好的顾问那里花一些时间来解决简单的可扩展性解决方案.每年额外的数百万美元可用于生产值得在这个漂亮的网站上销售的东西......
编辑:另一件需要考虑的事情......
我最近遇到过兵马俑.我正在重新思考一切,并希望尽快将其部署在一个重要的系统中.特别是,Terracotta比其他任何东西都更好地集群,所以我不再推荐使用WebLogic进行集群.
术语"应用程序服务器"是不明确的.使用GlassFish v3,您可以从传统的Web容器开始,然后进化(使用OSGi和简单的"添加容器"功能)来添加您喜欢的任何内容:JPA,JAX-RS,EJB,JTA,JMS,ESB等等......但它是相同的产品,相同的管理界面等.这是否适合作为应用程序服务器?-Alexis(太阳)
我经常问自己的第一个问题是"我可以用Tomcat做这个吗?".如果答案是否定的,因为我需要JMS或JTA,那么我求助于应用程序服务器.
我用的WebLogic 8大约3年前快乐与WebLogic的易用性和许可/成本模型.我们将它用于两个项目,一个是Web服务,另一个是门户.我们在其中任何一个项目中都没有遇到WebLogic或WebLogic Portal的任何问题.
在过去的两年里,我一直在使用WebSphere.每当我与IBM协商时,它总是最终成本是WebLogic等价物的两倍,但公司政策规定必须使用WebSphere.我发现WebSphere上的学习曲线比WebLogic要陡峭得多,我们的构建/部署/测试生命周期非常耗时,因此我们在开发环境中使用了Tomcat.但是我遇到的最大问题是当我们遇到一个错误,迫使我们升级到下一个补丁版本时才遇到解决web.xml的新问题.花了48小时的时间才完成所有工作.
目前虽然我正在使用JBoss.大约3个月前,我正准备用Tomcat和Jetspeed 2开始我的新项目,但是我注意到Jetspeed 2现在看起来有点停滞不前,JBoss Portal 2.7.0刚刚发布了JSR 286/Portlet 2.0支持.我给了JBoss一个旋转,发现它很容易设置和管理.构建/部署/测试周期非常快,除非我在某处更改了Spring XML文件,否则我很少需要重新启动服务器.
我已经使用jBoss 3 - 4年了.
jBoss的参数:
开源.
提供商业支持.
庞大,活跃的用户社区.
针对jBoss的争论:
没有通用访问,支持的Java EE 5容器版本.
大量的文档,但冗长; 可能很难找到"我该怎么做x?"的答案.
与其他商业产品相比,4.x差的管理工具.