gpt4 book ai didi

java - 何时需要在 web.xml 中包含 Jersey ServletContainer 以启用 JAX-RS?

转载 作者:行者123 更新时间:2023-12-03 21:44:48 25 4
gpt4 key购买 nike

我什么时候需要在 web.xml 中包含以下代码片段才能激活 Jersey?

<servlet>
<servlet-name>Jersey App</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.company.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

是应用程序吗? Jersey 是默认激活还是需要这个 web.xml 条目取决于服务器?

如果一个应用程序。服务器不需要上面的代码,我可以配置servlet映射路径吗,比如:

<servlet-mapping>
<servlet-name>Jersey App</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>

最佳答案

我只是在总结 Bhesh 在评论中发送的 Jersey 2.x 文档:

Servlet 2.x 容器

(Java EE 5、Glassfish 2.x),您需要将 Jersey 作为 Servlet Hook 。

<servlet>
<servlet-name>MyApplication</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
...
</init-param>
</servlet>
...
<servlet-mapping>
<servlet-name>MyApplication</servlet-name>
<url-pattern>/myApp/*</url-pattern>
</servlet-mapping>

或 Servlet 过滤器:

<filter>
<filter-name>MyApplication</filter-name>
<filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
<init-param>
...
</init-param>
</filter>
...
<filter-mapping>
<filter-name>MyApplication</filter-name>
<url-pattern>/myApp/*</url-pattern>
</filter-mapping>

Servlet 3.x 容器

无描述符的情况

(Java EE 6、7;Glassfish 3、4)对于最简单的情况,不需要 web.xml 配置。相反,需要一个自定义的 ResourceConfig 类和用于配置的 @ApplicationPath 注释:

@ApplicationPath("resources")
public class MyApplication extends ResourceConfig {
public MyApplication() {
packages("org.foo.rest;org.bar.rest");
}
}

使用 web.xml 配置

<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>

<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/myresources/*</url-pattern>
</servlet-mapping>
</web-app>

在这种情况下,所有根资源类(用@Path 注释注释的类)以及与应用程序一起打包的任何用@Provider 注释注释的提供程序都将自动注册到 JAX-RS 应用程序中。

关于java - 何时需要在 web.xml 中包含 Jersey ServletContainer 以启用 JAX-RS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22691971/

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