通常我们使用 WebLogic 或 JBoss 来部署我们的应用程序。我知道当使用像 Spring 这样的开源解决方案时,您可以开发您的应用程序并在像 Jetty 这样的简单 servlet 容器上运行它。所以问题是为什么还要麻烦应用服务器?
7 回答
没有人因为在企业环境中使用 WebLogic 或 WebSphere 而被解雇。对于大企业和管理者来说,不仅技术方面很重要。这些应用程序服务器提供功能齐全的管理控制台,即使是没有经验的管理员也易于使用。此外,更容易找到支持服务。使用开源组件的公司需要投资有经验的开发人员来设置所有内容并进行维护。应用服务器在公司(例如银行)中广泛使用,他们的业务与软件无关。对他们来说,从单一供应商处购买所有东西(软件许可、安装/配置、支持服务)更有意义。
如果你一定要问,你买不起。
说真的,成熟的应用程序服务器有更多的功能,你必须决定它们是否值得你使用,比如 Tomcat 或 Jetty。我认为这里不适合尝试给出所有原因,但这里有一个:应用程序服务器可以更容易地将功能和服务包装在事务中。这里给出了更多的理由。
WebLogic 和 JBoss 的集群、故障转移和会话同步特性仍然使它们在大型数据中心中物有所值。
当然,JBoss 使用 Tomcat 作为他们的 Web 前端,所以它不是非此即彼。
我见过人们将 OpenEJB 和 ActiveMQ 添加到 Tomcat 并获得 Java EE 应用服务器的所有功能。这条线比较模糊。
Spring DM 服务器建立在 Tomcat 之上。看看它是否可以开始从 Java EE 应用服务器人员手中夺走注意力和市场份额将会很有趣。
我喜欢 Spring——它是我的首选框架——但我可以告诉你,知道 Java EE 是由多个应用服务器供应商实现的标准,这让一些人感到欣慰。如果您不使用特定于供应商的扩展,理论上您的代码可以从 WebSphere 移动到 WebLogic 到 JBoss 而无需更改。一些大型IT商店就是这样。他们回避 Spring,因为它不是标准。这是罗德约翰逊和他的团队的创意。如果你决定不喜欢他们的东西,你就无处可去。
有一个新的 Java IoC/DI 标准正在开发中。Rod Johnson 和 Bob Lee 正在为此努力。也许这将开始平息一些恐惧。
有些人喜欢“以防万一”拥有 EJB 支持(Java EE 规范)
有几个原因,其中大多数可能适用于也可能不适用于特定需求。
1) 支持。许多企业喜欢与开发服务器的供应商签订支持合同。使用开源解决方案,您几乎可以“靠自己”。
2) 完整的 Java EE / EJB 支持。虽然我自己并不觉得这特别有用,但这些功能已被商业应用程序广泛使用。如果你需要它们,真的别无选择。如果你不需要它们,它们就是浪费。
3) 良好的管理控制台。Tomcat 有一个管理控制台,允许您添加和删除应用程序。据我所知,就目前而言。WebSphere 有这一点(虽然不是很精简),但您也可以更改连接池大小、数据源、线程池大小、更改日志配置(非常高的粒度),并激活内存和 JVM 分析。大多数情况下无需重新启动应用服务器。据说,集群也相对容易设置。tomcat 也明显缺少安装 .EAR 文件的能力,如果您要安装多个相互关联的应用程序,那么管理它们将变得非常痛苦。
您也可以(至少)在 tomcat 中完成大部分(3),但不能通过管理 GUI。有些人喜欢有一个漂亮的 GUI。
应用服务器是一种架构解决方案。如果您要考虑应用程序的不同可重用模块,则必须使用它。如果您不介意您的服务应该通过 HTTP 堆栈实现,那么 EJB 必须是您的默认选项。有了 AS,您就有了一个已经打包好的解决方案,可以以架构方式解决良好实践。您可以使用开箱即用的队列、主题、jms 等,这些都是 Java EE 标准。但我认为您必须以这种架构嗡嗡声的方式思考您的所有应用程序,才能判断 AS 决定。