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

2022-08-31 08:08:09

如果您今天启动了一个新的Java EE项目,该项目将在大约一年内完成,那么您会选择哪个应用程序服务器,为什么?

你的部分答案应该包括你决定的论点。以及您对所选 Java EE 服务器以及市场上其他可用服务器的经验。这些都很有趣,因为我们都能感受到你的答案中的调查和想法。


答案 1

在过去的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吗?然后向雄猫倾斜,也许加上一些东西。

我可以只用servlet吗?然后我会使用Jetty - 它是最轻,最快,最简单,最灵活的解决方案。如果我倾向于使用Jetty,我会质疑我对原因的所有假设。YAGNI适用。

最好是在Jetty上使用StringTemplate/WebStringTemplate:一个干净,健壮,快速,可维护的解决方案,没有许可费,良好的声誉和支持等。这就是我现在开始的地方。

大多数应用程序/系统选择许多花哨的J2EE功能,而它们真正需要的只是servlet和JDBC以及一些像样的架构/设计。问问为什么你认为你需要更多。

在成熟的容器中,我会避免使用WebLogic和WebSphere,除非你支持一个主要的公共网站(我现在雇主的网站部署在WebLogic上,每月获得1100多万次点击,其他网站也相当)。WebLogic真正声名鹊起的是它们相对容易的集群,但(几乎)不惜一切代价避免了其专有的供应商锁定功能。WebSphere 只是一场噩梦,我会不惜一切代价避免它 - 我拒绝做涉及 WebSphere 的项目,因为过去做过几个项目。这两种产品都不值得支付巨额许可费,除非您确实有特殊需求来推动专有功能的使用。在担任许多财富500强公司的高级架构师/工程师的十年中,我还没有看到这样的需求。另一方面,由于选择这样的专有产品,我看到了很多痛苦。

即使对于真正大,高流量的公共网站,专有产品仍然是值得怀疑的。我宁愿每年花费数百万美元的许可费在一些好的硬件上,以及从少数真正优秀的顾问那里获得一些高质量的时间来解决一个简单的可扩展性解决方案。然后,每年额外的数百万可以用来生产值得在那个漂亮的网站上销售的东西......

编辑:另一件值得考虑的作品...

我最近遇到了兵马俑。我正在重新思考一切,并希望尽快将其部署到一个重要的系统中。特别是,Terracotta的聚类比其他任何东西都好,所以我不再推荐WebLogic进行聚类。


答案 2

术语“应用程序服务器”是模棱两可的。使用GlassFish v3,您可以从传统的Web容器开始,然后发展(使用OSGi和简单的“添加容器”功能)以添加您想要的任何内容:JPA,JAX-RS,EJB,JTA,JMS,ESB等...然而,它是相同的产品,相同的管理界面等。这是否符合您的应用程序服务器的条件?-亚历克西斯(周日)


推荐