【问题标题】:How transaction used to handle during initial days of J2EE?在 J2EE 最初的日子里,事务是如何处理的?
【发布时间】:2016-06-16 14:27:21
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: jakarta-ee web-applications transactions web-container


    【解决方案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 吸取的经验教训基础上得到了很大改进,因此如果您在真正的 Java EE 服务器中随时可以使用 EJB,则没有理由用 Spring 取代它。只有那些坚持使用 Tomcat 的人(例如客户或托管限制)通常除了 Spring 之外别无选择,让事务管理变得轻而易举。

    另见:

    【讨论】:

    • 感谢您的回复,内容非常丰富。所以在最初的日子里,Web 应用程序是如何处理事务的。我可以最好地猜测,所有编码(让我们忘记 EJB、Spring、Hibernate..)。我赶上来有点晚了:(
    猜你喜欢
    • 2015-08-28
    • 2011-04-02
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多