我最近开始学习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文件添加到我的应用程序中,就可以使用它们来构建和运行了。却没有得到合同课程。
2条答案
按热度按时间mfuanj7w1#
在编译代码的时候,你需要servlet-api jar文件,因为这是例如。
HttpServletRequest
是。您不需要在应用程序中包含该jar,因为它已经由部署war文件的Servlet容器提供,例如。雄猫。对于Tomcat,各种servlet类的 * 实现 * 都在
catalina.jar
中,至少对于Tomcat 9是这样的,例如:ApplicationHttpRequest
是实现HttpServletRequest
的类。你不需要它来编译你的代码。8ehkhllq2#
准确地说,Tomcat不是一个成熟的Java EE容器,它只处理Java EE规范的一部分(主要是servlet,jsp,jndi和其他一些)。
正如Andreas所写的那样,你需要
serlvet-api.jar
来编译你的代码(否则HttpSerlvetRequest
会错过)。但是由于Tomcat已经提供了它(作为接口)以及实际的实现,您应该将它作为“提供的”依赖项添加到您的maven文件中。