gpt4 book ai didi

tomcat - Jersey 是如何连接到 servlet 3 容器的

转载 作者:行者123 更新时间:2023-11-28 22:17:04 25 4
gpt4 key购买 nike

对于 servlet 2.5,必须在 web.xml 中声明一个 Jersey 容器 servlet,以便将 Jersey 连接到 Tomcat。

<web-app>
<servlet>
<servlet-name>MyApplication</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
...
</init-param>
</servlet>
</web-app>

对于 servlet 3.x,我们可以做同样的事情。但是我们也可以去掉web.xml中的Jersey容器servlet,直接放一个Application的子类进去。

<web-app>
<servlet>
<servlet-name>org.foo.rest.MyApplication</servlet-name>
</servlet>
...
<servlet-mapping>
<servlet-name>org.foo.rest.MyApplication</servlet-name>
<url-pattern>/resources</url-pattern>
</servlet-mapping>
...
</web-app>

我的问题是,在这种情况下,Jersey 是如何集成到 Tomcat 中的? Application 类是否隐含地执行某些操作,或者 servlet 是否在类路径中自动发现 Jersey jar?

最佳答案

我不确定 jersey 是如何实现它的,但他们可能使用了几种方法:

  • 在 Servlet 3.0 ( http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContainerInitializer.html ) 中引入了一个名为 ServletContainerInitializer 的功能,它允许库/运行时收到 Web 应用程序启动阶段的通知,并执行任何所需的程序注册响应它的 servlet、过滤器和监听器

  • 可以将他的库创建为 web-fragment,这样您就可以在 jar 中包含 web-fragment.xml,您可以在其中注册 servlets/filter/etc。然后在启动期间,此 web-fragment.xmlweb.xml 合并。因此,在 web 片段中注册的组件被视为在 web.xml 中注册


编辑:(来自@peeskillet 评论)Jersey 使用 servlet 容器初始化程序:https://github.com/jersey/jersey/blob/master/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/init/JerseyServletContainerInitializer.java

关于tomcat - Jersey 是如何连接到 servlet 3 容器的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42812584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com