Java EE 规范与实施
Java EE Specification vs Implementation
我最近开始使用 Java EE 并且很难理解它。我在这里阅读了一些关于 SO 的答案,但我仍然觉得我的理解存在一些差距。基本上,Java EE 是一个规范,TOMCAT、Glassfish 等应用服务器都有具体的实现。此外,任何人都可以提供 EE 的实现。
所以,我从 Maven 仓库下载了 javax.sevlet-api-4.0.1-sources.jar,我可以看到它们只是接口,我假设我们只是使用它们构建项目?
在tomcat lib 文件夹中有一个servlet-api.jar。这是 Servlet 的 tomcat 实现吗?如果是,那么是否可以用另一个 servlet 版本实现替换它?
现在,Hibernate 是 Persistence API 的实现。如果我想在 Tomcat 中使用 Hibernate。我只需要将与 Hibernate 相关的 jar 添加到我的应用程序中,就可以将它们用于构建和 运行?没有真正得到合同 类.
您在编译代码时需要 servlet-api jar 文件,因为那是例如HttpServletRequest
是。您不需要将该 jar 包含在您的应用程序中,因为它已经由您将 war 文件部署到的 Servlet 容器提供,例如Tomcat.
使用 Tomcat,各种 servlet class 的 实现 在 catalina.jar
中,至少 Tomcat 9,例如ApplicationHttpRequest
是 class 实现 HttpServletRequest
。你不需要这个来编译你的代码。
准确地说,Tomcat 不是一个完全成熟的 JavaEE 容器,它只处理部分 JavaEE 规范(主要是 servlet、jsp、jndi 和其他一些)。
正如 Andreas 所写,您需要 serlvet-api.jar 来编译您的代码(否则 HttpSerlvetRequest 将丢失),但是 tomcat 已经提供了它(作为接口)以及实际实现,您应该将其作为 "provided" 依赖项添加到您的 Maven 文件中。
我最近开始使用 Java EE 并且很难理解它。我在这里阅读了一些关于 SO 的答案,但我仍然觉得我的理解存在一些差距。基本上,Java EE 是一个规范,TOMCAT、Glassfish 等应用服务器都有具体的实现。此外,任何人都可以提供 EE 的实现。
所以,我从 Maven 仓库下载了 javax.sevlet-api-4.0.1-sources.jar,我可以看到它们只是接口,我假设我们只是使用它们构建项目?
在tomcat lib 文件夹中有一个servlet-api.jar。这是 Servlet 的 tomcat 实现吗?如果是,那么是否可以用另一个 servlet 版本实现替换它?
现在,Hibernate 是 Persistence API 的实现。如果我想在 Tomcat 中使用 Hibernate。我只需要将与 Hibernate 相关的 jar 添加到我的应用程序中,就可以将它们用于构建和 运行?没有真正得到合同 类.
您在编译代码时需要 servlet-api jar 文件,因为那是例如HttpServletRequest
是。您不需要将该 jar 包含在您的应用程序中,因为它已经由您将 war 文件部署到的 Servlet 容器提供,例如Tomcat.
使用 Tomcat,各种 servlet class 的 实现 在 catalina.jar
中,至少 Tomcat 9,例如ApplicationHttpRequest
是 class 实现 HttpServletRequest
。你不需要这个来编译你的代码。
准确地说,Tomcat 不是一个完全成熟的 JavaEE 容器,它只处理部分 JavaEE 规范(主要是 servlet、jsp、jndi 和其他一些)。
正如 Andreas 所写,您需要 serlvet-api.jar 来编译您的代码(否则 HttpSerlvetRequest 将丢失),但是 tomcat 已经提供了它(作为接口)以及实际实现,您应该将其作为 "provided" 依赖项添加到您的 Maven 文件中。