什么时候Spring + Tomcat不够强大?

时间:2009-11-30 16:16:18

标签: spring tomcat java-ee weblogic

我最近一直在阅读/学习更多关于Spring的知识,以及如何将Spring与其他开源工具(如Tomcat和Hibernate)结合使用。我正在评估Spring MVC是否可能成为我工作项目的替代技术,它使用WebLogic和大量自定义Java EE代码。问题是,我一直怀疑我们的解决方案是过度设计的,并且比它需要的更复杂。令人惊讶的是,它是2009年,然而,我们正在编写自己的事务处理和线程池类。如果你知道我的意思,它就不像我们是亚马逊,eBay或谷歌。因此,我正在研究“更简单更好”的选择。

所以这是我的问题:我想听听你如何决定是否需要一个成熟的Java EE应用服务器的意见。如何“测量”Java EE应用程序的大小/负载/需求?并发用户数?每日总交易量?在你投降之前,应用程序需要多么“沉重”才能说:“好吧,Tomcat只是没有削减它,我们需要JBoss / WebLogic / WebSphere”?

7 个答案:

答案 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)

Google开放了大量代码。如果您自己编写低级别的东西,而不是实现已编写的代码,那么您通常会过度思考问题。

回到实际问题,Walmart.com,etrade.com,天气频道和quite a few others只使用Tomcat。来自IBM的营销和销售人员可能会让您相信不同,但Tomcat没有上限。

除了EJB之外,我不确定Tomcat缺少什么,而且我不是EJB的粉丝。

答案 3 :(得分:1)

除了Java EE中更奇特的元素之外,tomcat没有提供的是会话bean(也称为EJB)。会话bean允许您有效地隔离您的处理。所以你可以有一个用于前端的盒子,另一个用于会话bean(业务逻辑),另一个用于数据库。

至少有两个原因你想这样做:

  1. 性能;你发现处理一切的一个盒子装的太多了。将不同的图层分隔到不同的框上可以让您向外扩展。会话bean还能够以更细粒度的级别进行负载平衡。 Tomcat和其他类似的Web服务没有开箱即用的集群。
  2. 柔性;现在您已将业务逻辑移动到自己的环境中,您可以开发一个使用相同层的备用前端,但是,例如,它是一个胖客户端前端。或者其他上下文可能会使用会话bean。
  3. 虽然我应该指出,如果您使用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)

也许这可能会引起人们的兴趣:

http://onjava.com/onjava/2006/02/08/j2ee-without-application-server.html

HTH