tomcat Java EE规范与实现

2wnc66cl  于 2023-10-19  发布在  Java
关注(0)|答案(2)|浏览(104)

我最近开始学习Java EE,并且很坚韧理解它。我在这里读了一些关于SO的答案,但我仍然觉得我的理解有一些差距。基本上,Java EE是一个规范,像TOMCAT、Glassfish等应用服务器都有具体的实现。而且,任何人都可以为EE提供实现。
所以,我已经从Maven repo下载了javax.sevlet-api-4.0.1-sources.jar,我可以看到它们只是接口,我假设我们只是使用它们来构建项目?
在tomcat lib文件夹中有一个servlet-api.jar。这是Servlet的tomcat实现吗?如果是,那么是否可以用另一个servlet版本实现来替换它?
现在,Hibernate是Persistence API的实现。如果我想在Tomcat中使用Hibernate。我只需要将Hibernate相关的jar文件添加到我的应用程序中,就可以使用它们来构建和运行了。却没有得到合同课程。

mfuanj7w

mfuanj7w1#

在编译代码的时候,你需要servlet-api jar文件,因为这是例如。HttpServletRequest是。您不需要在应用程序中包含该jar,因为它已经由部署war文件的Servlet容器提供,例如。雄猫。
对于Tomcat,各种servlet类的 * 实现 * 都在catalina.jar中,至少对于Tomcat 9是这样的,例如:ApplicationHttpRequest是实现HttpServletRequest的类。你不需要它来编译你的代码。

8ehkhllq

8ehkhllq2#

准确地说,Tomcat不是一个成熟的Java EE容器,它只处理Java EE规范的一部分(主要是servlet,jsp,jndi和其他一些)。
正如Andreas所写的那样,你需要serlvet-api.jar来编译你的代码(否则HttpSerlvetRequest会错过)。但是由于Tomcat已经提供了它(作为接口)以及实际的实现,您应该将它作为“提供的”依赖项添加到您的maven文件中。

相关问题