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

WebLogic部署后REST API URL路径访问异常求助

Jersey REST API在WebLogic部署后404问题排查

问题描述

使用Maven构建REST API Web应用,已引入Jersey依赖,WEB-INF目录下配置了web.xml和weblogic.xml。部署到WebLogic 14.1.1.0服务器后,index.jsp可正常访问,但所有REST API URL均返回「未找到」错误。

配置文件

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>Rest service</display-name>
  <servlet>
        <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.vno.testaddress</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/webapi/*</url-pattern>
    </servlet-mapping>
</web-app>

weblogic.xml

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
    xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">
    <wls:weblogic-version>14.1.1.0</wls:weblogic-version>
    <wls:context-root>/address</wls:context-root>
    <wls:container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4j.*</wls:package-name>

            <wls:package-name>org.glassfish.jersey.*</wls:package-name>
            <wls:package-name>io.swagger.core.*</wls:package-name>
            <wls:package-name>io.swagger.parser.*</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
</wls:weblogic-web-app>

Java代码

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

/**
 * Hello world!
 *
 */
@Path("myresource")
public class Testaddress 
{
     @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String getIt() {
            return "Hello world!";
        }
}

错误情况

尝试访问URL:http://192.168.77.10:7001/testaddress-0.0.1-SNAPSHOT/webapi/myresource,期望返回「Hello world!」,但页面显示「未找到」错误。

解决方案

1. 修正访问URL(核心问题)

weblogic.xml中已通过<wls:context-root>/address</wls:context-root>指定了应用的上下文根路径,因此正确的API访问URL应为:
http://192.168.77.10:7001/address/webapi/myresource

2. 其他排查点

  • 包路径验证:确认Testaddress类确实位于com.vno.testaddress包下,确保web.xml中的包扫描配置正确
  • Jersey版本兼容:WebLogic 14.1.1.0兼容Jersey 2.x版本,确保pom.xml中引入的Jersey依赖版本与容器兼容,且代码使用jakarta.ws.rs包(当前代码已符合要求)
  • 类加载配置:若仍有问题,可尝试将weblogic.xml中的<prefer-web-inf-classes>设为true,强制优先加载WEB-INF下的类,避免容器自带类库冲突
  • 日志排查:查看WebLogic服务器日志,检查是否存在Jersey初始化异常、类加载失败等信息,进一步定位问题

内容的提问来源于stack exchange,提问作者S Mugunthan kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:10:30