Answers:
在过去的10多年中,我使用了WebLogic,WebSphere,JBoss,GlassFish,Resin,Jetty,Tomcat和其他一些软件。因此,如果我正在考虑一个新项目,我会先问自己几个问题。我不再质疑的一件事是,除非我为妈妈哭泣,否则我会一直遭受酷刑,除非我遭受酷刑。
由于某人的授权,我是否必须兼容/部署特定产品?有没有办法忽略它们或说服它们呢?如果是这样,那就是您的答案。
我必须使用EJB吗?真?尽可能避免使用它们-实际上只有大型企业级系统才需要它们。请记住,它们仅仅是工具,而在那是大型工具(有人可以说“ Golden Sledgehammer”吗?)。它们被过度使用了,因此,真的,真的在质疑您是否需要它们。如果确实需要它们,那么这将删除您的几个选项,包括我最喜欢的Jetty。
您是否必须使用其他任何主要的J2EE技术,例如JMS,ESB等?如果是这样,而您确实不能没有,那么您将再次被限制在成熟的J2EE容器中。例如,在您致力于BPM之前,请仔细考虑和研究,并避免(几乎)所有代价避免使用AquaLogic BPM-在极端情况下这很丑陋。
如果您确实必须使用成熟的J2EE容器,请首先考虑开源,因为它更健壮,得到更好的支持并且更具成本效益。他们拥有更大的客户群和更开放的支持互动,因此他们倾向于更快地获得更好的修复程序。但是,Resin不成熟,相对于GlassFish或JBoss,我会避免使用它-我发现部署和支持存在问题。我更喜欢JBoss,因为它具有更广泛的客户基础,成熟度等。GlassFish很难集成到自动构建/部署过程中,但是对于某些特定功能(如果需要)可能会更好。
我有特殊的理由需要Apache吗?然后倾向于Tomcat,也许还有一些东西。
我可以只使用servlet吗?然后,我将使用Jetty-这是最轻,最快,最简单,最灵活的解决方案。如果我不愿意使用Jetty,我会质疑所有关于为什么的假设。YAGNI适用。
最好的方法是在Jetty上使用StringTemplate / WebStringTemplate:一种干净,健壮,快速,可维护的解决方案,无需支付许可费,可靠的信誉和支持等。这就是我今天开始的地方。
当大多数应用程序/系统真正需要的只是具有不错的体系结构/设计的servlet和JDBC时,它们会选择许多精美的J2EE功能。质疑为什么您认为自己需要更多。
在功能完善的容器中,除非您支持MAJOR公共网站(我当前雇主的网站部署在WebLogic上,并且每月获得11次以上的点击,否则其他网站是可比的),否则我将避免使用WebLogic和WebSphere。WebLogic真正成名的是它们相对容易的群集,但是避免了(几乎)全部成本避免使用其专有的供应商锁定功能。WebSphere简直就是一场噩梦,我将不惜一切代价避免-过去做过几次之后,我拒绝做涉及WebSphere的项目。除非您确实有特殊需求推动使用专有功能,否则这两种产品都不值得支付巨额许可费用。作为许多财富500强公司的高级架构师/工程师,十年来,我还没有看到这种需求。另一方面,
即使对于真正的大型,高流量的公共网站,专有产品仍然值得怀疑。我宁愿每年花费数百万美元的许可费,从一些非常好的顾问那里购买一些优质的硬件和一些优质的时间,以解决一个简单的可伸缩性解决方案。每年额外的数百万美元可以用来在这个不错的网站上产生值得销售的东西。
编辑:另一件考虑...
我最近遇到过兵马俑。我正在重新考虑所有内容,并希望尽快将其部署在重要的系统中。特别是,Terracotta的群集性能比其他任何产品都要好,因此我不再推荐WebLogic进行群集。
术语“应用服务器”是不明确的。使用GlassFish v3,您可以从一个传统的Web容器开始,然后发展(使用OSGi和简单的“添加容器”功能)来添加您想要的任何东西:JPA,JAX-RS,EJB,JTA,JMS,ESB ,等等。。。但是它是相同的产品,相同的管理界面,等等。这对您来说有资格充当应用服务器吗?-亚历克西斯(太阳)
我通常会问自己的第一个问题是“我可以使用Tomcat吗?”。如果答案是否定的,因为我需要JMS或JTA,则求助于应用程序服务器。
大约3年前,我使用WebLogic 8时对WebLogic的易用性和许可/成本模型感到满意。我们将其用于两个项目,一个是Web服务,另一个是门户。在这两个项目中,我们都没有遇到WebLogic或WebLogic Portal的任何问题。
在过去的两年中,我一直在与WebSphere合作。每当我与IBM进行谈判时,最终总是要花费相当于WebLogic两倍的成本,但是公司政策规定必须使用WebSphere。我发现WebSphere的学习曲线比WebLogic陡峭得多,我们的构建/部署/测试生命周期非常耗时,因此我们在开发环境中使用了Tomcat。但是,我遇到的最大问题是当我们遇到一个错误,该错误迫使我们升级到下一个补丁程序发行版时,遇到了解析web.xml的新问题,这是我遇到的最大问题。整个过程花了48小时才能完成。
目前,尽管我正在使用JBoss。大约3个月前,我即将开始使用Tomcat和Jetspeed 2进行新项目,但是我注意到Jetspeed 2现在似乎停滞不前,并且刚刚在JSR 286 / Portlet 2.0支持下发布了JBoss Portal 2.7.0。我试用了JBoss,发现它的设置和管理非常简单。构建/部署/测试周期非常快,除非在某处更改了Spring XML文件,否则我几乎不必重启服务器。
我已经使用jBoss 3-4年了。
jBoss的参数:
反对jBoss的论点:
结帐GlassFish 3.1!3.1版建立在基于Java EE 6的模块化GlassFish v3内核之上,可提供群集,集中管理和高可用性。
有关更多详细信息,请参考http://blogs.oracle.com/nazrul/entry/glassfish_3_1。
我可能将您首选的操作系统作为决策标准。如果您将同一供应商用于OS和应用程序服务器,则应该可以更轻松地支持。如果您已经与一个或两个供应商建立了关系,请考虑是否适合与他们打交道。
从技术角度来看,我会选择GlassFish,因为它支持最新的创新。我认为JBoss并不坏,反而是它不是最新的。
我的大部分经验是在WebLogic上,但是我使用过JBoss和GlassFish。我刚刚在完整的Sun开源堆栈(OpenSolaris,GlassFish,MySQL)上发布了一个新站点,这是一个很棒的经历,但遇到的麻烦却很小。
我仍然认为WebLogic是市场上最好的Java EE应用服务器。如果您负担得起这些许可费,我认为这是值得的。
看到将Tomcat,OpenEJB和ActiveMQ结合在一起可以走多远,我感到很惊讶。在我看来,这似乎是一种低成本的选择。
我还将研究Spring dm Server。它基于Tomcat,但我认为他们添加的OSGi片段可能会在短时间内随处可见。如果以与Spring框架相同的质量来完成,那的确会很好。
另一种选择:完全不使用任何应用服务器。
退房 http://www.atomikos.com/Publications/J2eeWithoutApplicationServer。
对于Web项目,请根据需要保留一个轻量级的Web容器,并与Wicket等结合使用以避免JSP / JSF或struts的复杂性。
HTH盖伊