您目前是否将JBoss或Glassfish(或其他)用作新项目的Java EE服务器?[关闭]


136

如果您今天开始一个新的Java EE项目,该项目将在一年左右的时间内完成,那么您将选择哪个应用程序服务器,为什么?

您的部分答案应包括您的决定依据。以及您对选择的Java EE服务器和市场上其他可用服务器有多少经验。这些很有趣,因为我们都对调查的了解和对您答案的理解。

Answers:


181

在过去的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进行群集。


7
为了将来参考,通常可以通过Google或Wikipedia搜索找到缩写词的定义。YAGNI =您不需要它=不要过度设计JMS = Java消息服务ESB =企业服务总线BPM =业务流程管理
Rob Williams

21
您对Java EE和EJB的评论有些过时了。J2EE ?!那就像5年前。看一下Java EE 6,现代化您的观点!
Brian Leathem

6
@Brian:我同意Brian的观点,尤其是EJBLite,它的重量变得轻得多。
唐潘

7
@Brian,看一下帖子-它在您发表评论的三年之前写的。而且我仍然会说Spring比精简的Java EE更轻巧。
duffymo

2
2012年的判决是什么?JBoss 7 AS在Java 6 EE领域是否胜过Glassfish?还是相反?
罗兰多2012年

10

术语“应用服务器”是不明确的。使用GlassFish v3,您可以从一个传统的Web容器开始,然后发展(使用OSGi和简单的“添加容器”功能)来添加您想要的任何东西:JPA,JAX-RS,EJB,JTA,JMS,ESB ,等等。。。但是它是相同的产品,相同的管理界面,等等。这对您来说有资格充当应用服务器吗?-亚历克西斯(太阳)


1
不幸的是,Glassfish不再是正式产品,而是“仅”参考实现。
托尔比约恩Ravn的安德森

9

我通常会问自己的第一个问题是“我可以使用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文件,否则我几乎不必重启服务器。


好答案!你尝试过码头吗?如果有的话,您对此有何看法?

7

我已经使用jBoss 3-4年了。

jBoss的参数:

  1. 开源。
  2. 提供商业支持。
  3. 活跃的大型用户社区。

反对jBoss的论点:

  1. 没有通用访问,受支持的Java EE 5容器版本。
  2. 很多文档,但冗长;可能很难找到“我怎么做x?”的答案
  3. 与其他商业产品相比,适用于4.x的管理工具较差。

“没有通用访问权限,受支持的JEE 5容器版本。” 我想情况不再如此,对吗?
拉德瓦尔德

@Raedwald:是的,现在JEE 6已经存在了一段时间;-)
ymajoros 2011年


3

此处未讨论的另一点是性能。如果由于服务类型或用户数量而引起关注,则以下内容适用:

  • Tomcat似乎比Glassfish慢
  • 玻璃鱼似乎比树脂慢
  • 树脂比G-WAN + Java慢得多

请注意,G-WAN仅依赖JVM:它不使用任何其他容器(除非明确指定),因此您可以将其保留给Web应用程序中对性能至关重要的部分。

由于G-WAN支持其他语言(C,C ++,C#,D,Objective-C),因此您甚至可以在原始C中处理应用程序的某些部分,同时保留Java的其他任务。


2

我可能将您首选的操作系统作为决策标准。如果您将同一供应商用于OS和应用程序服务器,则应该可以更轻松地支持。如果您已经与一个或两个供应商建立了关系,请考虑是否适合与他们打交道。

从技术角度来看,我会选择GlassFish,因为它支持最新的创新。我认为JBoss并不坏,反而是它不是最新的。

我的大部分经验是在WebLogic上,但是我使用过JBoss和GlassFish。我刚刚在完整的Sun开源堆栈(OpenSolaris,GlassFish,MySQL)上发布了一个新站点,这是一个很棒的经历,但遇到的麻烦却很小。


操作系统并不是真正的问题,除非您有非常特定的二进制依赖关系(大多数Java项目都不应该这样)。我们在32位和64位Windows上进行开发,并在Solaris上的Glassfish上进行部署。大多数开发人员并不真正了解也不必关心。用户看不到它(我们的大多数开发都是Web应用程序)。
ymajoros 2011年

2

我仍然认为WebLogic是市场上最好的Java EE应用服务器。如果您负担得起这些许可费,我认为这是值得的。

看到将Tomcat,OpenEJB和ActiveMQ结合在一起可以走多远,我感到很惊讶。在我看来,这似乎是一种低成本的选择。

我还将研究Spring dm Server。它基于Tomcat,但我认为他们添加的OSGi片段可能会在短时间内随处可见。如果以与Spring框架相同的质量来完成,那的确会很好。


2
我对WebLogic的问题是供应商锁定,当您真的不需要时,这是一种令人讨厌的药丸!
Manius 2010年

1
我知道的所有Java EE供应商都是如此,而不仅仅是WebLogic。如果您使用任何特定于供应商的功能,那么您将被锁定。一定要编写代码。
duffymo 2010年

3
WebLogic仅用于商业用途-这就是我要得到的-与开放源代码替代品相比,一旦您写了一张大支票,您就被“锁定”到更大的程度。显然,如果您关心平台独立性,就不会使用特定于供应商的功能,所以这不是我要指的。实际上,我曾经读过的一项调查显示,开发人员认为,避免供应商锁定是开源的第一大优势(而不是成本)。
Manius

废话吗 您是否相信与供应商签订数百万美元的合同不会将您锁定?有你的证明。
duffymo

@ymajoros您的意思是“不应该”将供应商锁定吗?坦白说,我无法理解您的评论。
Patrick M

1

另一种选择:完全不使用任何应用服务器。

退房 http://www.atomikos.com/Publications/J2eeWithoutApplicationServer

对于Web项目,请根据需要保留一个轻量级的Web容器,并与Wicket等结合使用以避免JSP / JSF或struts的复杂性。

HTH盖伊


如果您不想学习使用工具,请不要使用任何工具。或者尝试成为一名熟练的专业人员,并在您的环境中进行投资,您会得到回报。必须承认我在某些项目中是这样做的。相同的项目没有开发任何应用程序服务器,而是在春天发展为自定义客户端服务器,再发展为纯Java EE和Glassfish。永远都不想回头,第一个解决方案实际上太复杂了,就像今天一样简单(而且标准的解决方案可以在任何Java EE应用服务器上进行部署而无需做太多更改)。
ymajoros 2011年

好答案,获取文档的不好方法
msangel 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.