You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多Jar项目中Jersey 2.x REST服务404问题求web.xml配置方案

解决Jersey 2.x多模块REST服务404问题的web.xml配置

核心问题

Jersey 2.x默认仅扫描当前Web项目类路径下的REST资源,Jar包中的资源需要显式配置扫描路径才能被识别。以下是针对你的场景的正确配置方案:

基础配置(解决项目1自身API的404)

替换项目1的web.xml为以下内容,重点注意Servlet类和包扫描参数:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>Jersey REST Service</servlet-name>
        <!-- 必须使用Jersey 2.x的Servlet容器类,不要用1.x的com.sun开头的类 -->
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <!-- 配置项目1的REST资源所在包,替换为实际路径 -->
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.yourproject1.rest</param-value>
        </init-param>
        <!-- 启动时加载Servlet,避免首次请求延迟 -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Jersey REST Service</servlet-name>
        <!-- 映射所有API请求到Jersey,可根据需求调整,比如/api/*或/* -->
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
</web-app>

扩展配置(同时解决项目2 Jar中API的404)

如果需要同时加载项目2中的REST服务,只需在包扫描参数中添加项目2的资源包路径,用逗号分隔:

<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <!-- 逗号分隔项目1和项目2的REST包路径 -->
    <param-value>com.yourproject1.rest, com.yourproject2.rest</param-value>
</init-param>

关键注意事项

  • 不要混淆Jersey版本:确保使用org.glassfish.jersey.servlet.ServletContainer,而非Jersey 1.x的com.sun.jersey.spi.container.servlet.ServletContainer,这是导致404的常见原因。
  • 路径匹配检查:确认url-pattern与你的API请求路径匹配,例如配置/api/*后,API请求应为http://localhost:8080/项目名/api/你的资源路径。
  • 验证资源注解:Jar中的REST类必须标注@Path注解,方法需添加@GET/@POST等HTTP方法注解,否则Jersey无法识别。
  • 日志排查:可添加日志配置查看资源加载情况,帮助定位问题:
    <init-param>
        <param-name>jersey.config.server.logging.level</param-name>
        <param-value>FINE</param-value>
    </init-param>
    

内容的提问来源于stack exchange,提问作者user9976805

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:15:41