【问题标题】:Tomcat API vs other APIsTomcat API 与其他 API
【发布时间】:2016-07-12 04:46:53
【问题描述】:

我最近一直在学习 Tomcat 和 servlet。现在我意识到Oracle APITomcat API 至少有些不同。我知道 Oracle API 应该更广泛,但即使在 Tomcat 操作的限制下,它们似乎也有完全不同的包等。

这可能看起来很愚蠢,但我找不到任何答案。有人可以解释一下差异吗?实际上,如果我构建一个在 Tomcat 下运行的服务,它是否也可以在 Glassfish 中运行,而不需要对导入进行任何重构?

--- 编辑 ---

所以,显然我把 Tomcat API 误认为是 Servlet API 等等。

解决方案不是查看上图中的 Tomcat Javadoc,而是查看 Servlet Javadoc 或任何有问题的内容。图片中的列表位于Apache Tomcat 8 Documentation Index,位于左侧,略向下。

谢谢,Andreas 和 EJP。

【问题讨论】:

  • 你指的是什么API? Servlet API 是一个共享标准,由许多 webapp 服务器实现,包括。 Tomcat、Glassfish、WebLogic……如果你想要完整的 Java EE API,请使用 TomEE,而不是 Tomcat,因为 Tomcat 只是一个 Servlet 容器,而不是一个完整的 EE 容器。除非绝对必要,否则不要使用您链接的 Tomcat API。
  • 谢谢。我知道,这是我的问题。我不需要完整的EE。问题是包和类在两个 API 或至少在包结构中看起来不同。例如,我可以在 Oracle 中轻松找到 servlet 包,但在 Tomcat 中找不到。
  • 您不必为 Tomcat API 烦恼。你永远不会使用它。您需要在 JEE API 和构成其中一小部分的 Servlet API 之间做出决定。
  • @Andreas Small 更正:TomEE不是完整的 Java EE 实现,而是Java EE Web Profile 的实现加上更多的好处。所以,比 Tomcat 更多的东西,但比完整的 Java EE 少得多。此外,TomEE 实现了 Java EE 6 Web Profile,而不是 7(仅供参考)。

标签: java oracle api tomcat servlets


【解决方案1】:

Java 企业版

您所说的“Oracle API”实际上是Java Enterprise Edition (Jave EE) 规范。我建议你避免使用你的误称。

Java EE 是在 Java 标准版 (Java SE) 之上分层的数十种不同技术的庞大集合。 Java EE 的各种实现支持不同的部分,不一定支持所有部分。

技术子集

Apache Tomcat 项目以及类似的Eclipse Jetty 项目和others,有意仅实施这些技术:

这几个 API 只是 Java EE 的一个小而重要的子集。

您链接的 Tomcat API 特定于 Tomcat 的实现。开发人员很少会通过该 API。相反,我们坚持以 Servlet、JSP、EL 和 WebSocket 规范发布的接口,这些规范都以 JSR 的形式发布。遵守规范意味着您的 Web 应用可以部署在其他实现上,以在需要时替代 Tomcat。

网络资料

Java EE Web Profile 是一个包含 Servlet 和 JSP API along with several more 的规范,但仍然是 all the possible Java EE technologies 的子集。 Apache TomEE 是 Web Profile 的一种实现,它以 Tomcat 开头并添加了更多库。另一个例子是 Glassfish,它是/曾经在 either a complete Java EE edition or a stripped-down Web Profile edition 中可用。请参阅问题,What is different about the Java EE packages? (SDK/normal vs Web Profile)

“完整”实现

Some products 实现所有(或几乎如此)Java EE 规范。

有时这被描述为“完整”实现。我认为该标签具有误导性,因为它暗示子集实现缺少或缺少所需的东西。恰恰相反。您应该始终使用仅包含您需要的部分的最精简的实现。负载越重的服务器占用的内存越多,启动和停止的速度就越慢,而且可能会花费更多的钱。例如,我在 Mac OS X 上的 Java 8 标准版 (SE) 之上仅使用带有 Vaadin 7 的 Apache Tomcat 8 构建和部署高度交互的桌面式 Web 应用程序。

还请记住,许多 Java EE 技术可以独立于完整的 Java EE 实现。因此,您可以从更精简的实现开始,然后为您需要的少数个别技术添加库。比如Bean Validation可以通过添加an implementation的JAR文件在Tomcat上使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2018-09-09
    • 2017-07-24
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    相关资源
    最近更新 更多