我最近一直在阅读/学习更多关于Spring的知识,以及如何将Spring与其他开源工具(如Tomcat和Hibernate)结合使用。我正在评估Spring MVC是否可能成为我工作项目的替代技术,它使用WebLogic和大量自定义Java EE代码。问题是,我一直怀疑我们的解决方案是过度设计的,并且比它需要的更复杂。令人惊讶的是,它是2009年,然而,我们正在编写自己的事务处理和线程池类。如果你知道我的意思,它就不像我们是亚马逊,eBay或谷歌。因此,我正在研究“更简单更好”的选择。
所以这是我的问题:我想听听你如何决定是否需要一个成熟的Java EE应用服务器的意见。如何“测量”Java EE应用程序的大小/负载/需求?并发用户数?每日总交易量?在你投降之前,应用程序需要多么“沉重”才能说:“好吧,Tomcat只是没有削减它,我们需要JBoss / WebLogic / WebSphere”?
答案 0 :(得分:9)
我认为使用完整的Java EE服务器的决定不应该基于用户数或交易数。相反,它应该基于您是否需要该功能。
在我目前的项目中,我们实际上正在从JBoss迁移到vanilla Tomcat,因为我们意识到我们并没有使用任何基本servlet之外的任何Java EE功能。但是,我们正在使用Spring。在Spring的基本对象管理,事务处理和JDBC功能之间,我们没有看到对EJB的迫切需求。我们目前使用Struts 2而不是Spring的MVC,但我听说过很棒的事情。无论如何,Spring很好地集成了许多Java Web框架。
答案 1 :(得分:4)
Spring不会尝试替换JavaEE规范的某些高级部分,例如JMS和JTA。相反,它建立在那些基础之上,使它们与“Spring方式”保持一致,并且通常使它们更容易使用。
如果您的应用程序需要JMS和JTA之类的强大功能,那么您可以通过Spring轻松使用它们。没问题。
答案 2 :(得分:1)
回到实际问题,Walmart.com,etrade.com,天气频道和quite a few others只使用Tomcat。来自IBM的营销和销售人员可能会让您相信不同,但Tomcat没有上限。
除了EJB之外,我不确定Tomcat缺少什么,而且我不是EJB的粉丝。
答案 3 :(得分:1)
除了Java EE中更奇特的元素之外,tomcat没有提供的是会话bean(也称为EJB)。会话bean允许您有效地隔离您的处理。所以你可以有一个用于前端的盒子,另一个用于会话bean(业务逻辑),另一个用于数据库。
至少有两个原因你想这样做:
虽然我应该指出,如果您使用Web服务与该中间层进行通信,它也可能在tomcat上!
答案 4 :(得分:1)
使用完整的Java EE服务器的唯一原因是,如果您需要分布式XA事务,如果您不需要XA事务,那么您可以使用Spring + JPA + Tomcat + Bean验证+ JSTL + EL + JSP + Java邮件。
Java EE服务器也应该实现JMS,但是在与应用程序服务器的其余部分相同的VM中运行JMS服务器是没有意义的,所以如果你需要JMS,你应该有一个单独的JMS服务器。
答案 5 :(得分:1)
我非常不同意这里给出的所有答案。
可以将所有内容添加到Tomcat,包括EJB,CDI,JTA,Bean验证,JAX-RS等。
问题是:你想要这个吗?你想在正确的版本中组装所有这些依赖项并测试它们是否一起工作,当其他人已经这样做了吗?
让我们明确一点:没有人只使用Tomcat!每个人都会添加一个Web框架,一个ioc容器,一个orm,一个事务管理器,Web服务等等。
像TomEE这样的轻量级Java EE服务器已经包含了所有这些,并且使得所有这些事情集成得更好的完整堆栈体验。
答案 6 :(得分:0)