【问题标题】:When do we need to run a Java application in a container?我们什么时候需要在容器中运行 Java 应用程序?
【发布时间】:2015-09-10 01:05:20
【问题描述】:

最近我开始学习 Java EE 和相关技术,有些概念让我感到困惑。我在某处读到,每当构建 Java EE 应用程序时,都必须使用容器。

目前,我正在学习 Spring 框架并尝试使用它构建一个小型应用程序以动手实践。现在,我不确定我是否必须使用容器(比如 Tomcat),或者它取决于我正在构建的应用程序是否需要容器。

如果它取决于一个人正在构建的应用程序,那么有助于决定是否应该使用容器的因素是什么?

【问题讨论】:

  • 如果您的应用程序使用 servlet,您将需要一个容器来处理请求。 Tomcat 是一个非常受欢迎的选择。我预计您的下一个主题将涉及此内容:stackoverflow.com/questions/5039354/…
  • 基本:当你想使用特定容器提供的功能时...
  • 我很乐意删除这个问题,但如果投反对票的人能告诉我原因,那就太好了。不说原因可能会导致我这边重复提出错误的问题,因为我不知道原因。
  • 感谢@bphilipnyc 的回答。我指出了正确的方向。我会更深入地了解这一点以澄清我的理解。
  • @Siddharth 当然可以,但是您期望什么? :) 你可以完全自己做所有事情,例如服务 bean 或事务管理实例的池化。如果你想让 EJB 容器为你做这件事,你当然必须使用它。但是您可以自己编写所有代码,也可以使用一些其他框架等提供的完全不同的方法......所以,您的问题的答案是一般的,恕我直言

标签: spring jakarta-ee containers


【解决方案1】:

有两个容器。一种是运行 Web 应用程序的 Web Container(IIS、Apache),另一种是运行企业应用程序的“应用程序容器”。

Web 应用程序 = 使用 HTML、XML、CSS 和 JSP 开发的应用程序
企业应用程序 = 除了 HTML 和 XML 之外,开发的应用程序还使用 JAVA、J2E 和 Serverlet。

【讨论】:

    【解决方案2】:

    Puuhhh,这是一个很大的问题,没有简单的答案。但至少我会尽力解释我自己的观点:

    什么是容器?

    容器为您提供功能。这样的功能可以是处理 Web 请求并将它们分派给 servlet - 在这种情况下,我们称它们为 servlet 容器(例如 Tomcat 或 Jetty)。

    但容器也可以提供其他东西,例如他们可以提供用户身份验证、日志记录或与数据库的连接。大多数容器(例如 Tomcat)会做很多这样的事情(例如 Tomcat 会做我提到的所有事情)。有些容器比其他容器做得更多,例如JBoss 可以做的远不止 Tomcat。

    权衡

    但是,有一个权衡:如果您使用一个简单的容器(如 Tomcat),您需要自己做很多事情或使用其他框架(如 Spring)。但是如果你使用一个强大的容器,你必须非常了解这个容器,你的应用程序迟早会依赖这个具体容器的可能性很高。

    关键是,使用容器不是强制性的。这是一个决定。有些人会支持它,有些人会反对它。但是根据您阅读的书籍,这个决定已经做出(例如,J2EE 需要一个 J2EE 容器,这就是它的工作方式)。

    趋势(恕我直言)

    多年前的趋势是使用提供尽可能多的强大的 (J2EE) 容器。恕我直言,今天的趋势是使用更小更轻的解决方案。大多数开发人员现在更喜欢使用 Tomcat 服务器而不是 JBoss 服务器。

    没有容器的框架

    虽然 J2EE 需要一个容器,但还有其他框架/技术支持在没有任何外部容器的情况下开发 Web 应用程序。这样的框架是Play!Spark Java

    注意

    如果您不熟悉容器和 Spring,请注意不要混淆。您将使用 Spring 开发的大多数应用程序都是将部署到 servlet 容器的 Web 应用程序。这是很常见的。但是 Spring 并没有对此进行中继。您也可以在没有此类容器的情况下使用 Spring,例如开发桌面应用程序。但是如果你想开发一个 Web 应用程序,Java 的方式是使用一个 servlet 容器。

    【讨论】:

      【解决方案3】:

      如果您的应用程序使用 servlet,您将需要一个容器来处理请求。 Tomcat 是一个非常受欢迎的选择。

      我预计您的下一个主题将涉及“应用程序服务器”与“容器”的 this discussion

      【讨论】:

        猜你喜欢
        • 2012-04-25
        • 1970-01-01
        • 2011-05-21
        • 2019-07-17
        • 1970-01-01
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多