JAX-RS Web服务在哪个容器中运行?

Des*_*PRG 5 java rest tomcat jax-rs java-ee

据我所知,java EE应用服务器主要有两种类型的容器.即Web容器和EJB容器.

我设法在Tomcat中运行一个使用Jersey作为其实现的JAX-RS应用程序.据我所知,Tomcat只是一个Web容器.为了在tomcat中运行web服务,必须将jersey jars捆绑到war文件中,因为开箱即用,Tomcat没有泽西罐子.这提出了一个问题.

tomcat是否使用除Jersey之外的其他JAX-RS实现?如果是的话是什么?

如果不,

如果没有捆绑到war文件中的jar,我无法运行Jax-RS应用程序,这意味着JAX-RS应用程序需要的东西比Web容器提供的更多.这意味着它们不会在Web容器中运行.那么它在哪个容器中运行?

Pau*_*tha 8

"tomcat是否使用除Jersey之外的其他JAX-RS实现?"

我不知道你是否在询问Tomcat是否有实现,或者它是否能够在Jersey旁边运行其他实现.

前者的答案是否定的.Vanilla Tomcat不支持JAX-RS.它不是EE服务器,而只是一个Servlet容器.但TomEE +(基于Tomcat构建)支持(使用CXF).

后者的答案是肯定的.您只需要添加实现jar并正确配置应用程序

"如果没有捆绑到war文件中的jar,我就无法运行Jax-RS应用程序"

是的,你不能.简单来说,没有实现来支持JAX-RS运行时.

"这意味着它们不会在Web容器中运行.然后它在哪个容器中运行?"

它确实在Servlet容器中运行.JAX-RS实际上是建立在Servlets之上的.对于泽西岛,它使用了ServletContainer.Tomcat将向Jersey Servlet发送请求,Jersey将通过配置的提供者和资源处理请求,并将响应吐出回容器.容器将响应发送给客户端.(见下面的第一个链接)


如果您正在寻找支持整个EE规范的Java EE应用服务器,您可以查看Glassfish(它使用Jersey作为其实现),JBoss/Wildfly(它使用Resteasy),上面提到的TomEE +(使用CXF)


以下是一些您可能感兴趣的相关读物: