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

部署JAX-RS应用到WebSphere 8.5时出现Servlet mapping not found错误

问题根因与解决方案

1. 修复web.xml版本兼容问题

WebSphere 8.5.5遵循Java EE 6规范,最高仅支持web-app 3.0版本,你当前使用的3.1版本schema会导致WebSphere解析web.xml异常,无法正确识别注册的Servlet信息。
替换web.xml头部为3.0版本配置:

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

2. 修正Servlet名称配置

WebSphere对Servlet名称的特殊字符处理比Tomcat更严格,当前配置中servlet-name使用的带空格值Java WS容易出现匹配异常。

  • 将<servlet>节点下的<servlet-name>修改为无空格值,例如JavaWS
  • 同步修改<servlet-mapping>节点下的<servlet-name>为相同的无空格值,保证两端完全一致

3. 解决JAX-RS实现冲突

WebSphere 8.5.5内置了基于Apache Wink的JAX-RS 1.1实现,会和你引入的Glassfish Jersey实现产生冲突,仅修改类加载策略无法完全屏蔽内置实现:

  1. 在WEB-INF目录下新增ibm-web-bnd.xml配置文件,添加如下内容禁用内置JAX-RS处理器:
<?xml version="1.0" encoding="UTF-8"?>
<web-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-bnd_1_2.xsd"
         version="1.2">
    <classLoader order="PARENT_LAST"/>
    <jaxrs-api disabled="true"/>
</web-bnd>
  1. 确认WAR包的WEB-INF/lib目录下已包含所有Jersey运行所需的依赖包,不存在缺失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 07:15:04