2

尽管我在将近十年前学习了 Java,但我大部分时间都在使用 C、C++ 和核心 Java(不是创建企业应用程序)。现在,我已经开始在企业版中工作了。我对最初几天的工作方式有些怀疑。

我试图了解 Web 应用程序过去是如何工作的。据我了解,用于创建 Web 应用程序的主要技术是 Servlets/JSP(不考虑 Spring MVC、struts 等更高层次的抽象),部署在 Web 容器(Apache Tomcat)中。

现在,使用这些,它将如何处理事务支持?据我了解,网络容器不支持事务。那么这是否意味着最初的事务支持是通过显式编码来实现的?(这里的事务我指的是数据库事务/分布式事务)。如果是这样,这将是多么强大?

任何了解这一点的信息都会有很大帮助。

4

1 回答 1

1

事实上,像 Tomcat 这样的准系统 servlet 容器不支持任何形式的事务管理。你基本上有三个选择:

  1. 手动管理事务(可以在 JDBC、Hibernate 和 JPA 中完成)。
  2. 或者,为此使用 Spring。
  3. 或者,将 Tomcat 替换为真正的 Java EE 服务器,以便您可以使用 EJB/JTA。例如,TomEE。

这不仅在“最初的 J2EE 时代”是正确的,而且现在仍然非常正确。只是,J2EE 的 EJB 2.x 是一个糟糕的 API,以至于 Spring 在当时更受青睐。由于 Java EE 5 (2006) EJB 3.x 在从 Spring 中吸取的经验教训基础上得到了很大改进,因此如果 EJB 在真正的 Java EE 服务器中现成可用,就没有理由用 Spring 取代它。只有那些坚持使用 Tomcat 的人(例如客户或托管限制)通常除了 Spring 之外别无选择,以使事务管理变得轻而易举。

也可以看看:

于 2016-03-03T19:16:10.667 回答