访问指定URL遇Error 404: NoTargetForURIException问题求助
排查WebSphere中404 NoTargetForURIException的问题
针对你遇到的Error 404: com.ibm.ws.webcontainer.servlet.exception.NoTargetForURIException: No target servlet configured for uri: /oscwi_eenablement/index.wss错误,我整理了几个核心排查方向,帮你定位问题:
1. 检查WAR包内的web.xml Servlet映射配置
这个错误的核心是服务器找不到对应/index.wss路径的Servlet映射。你需要打开OSCWI_eEnablement.war包,查看WEB-INF/web.xml文件,确认是否存在针对.wss后缀或具体/index.wss路径的Servlet配置:
比如,正确的映射应该类似这样:
<servlet> <servlet-name>IndexWssServlet</servlet-name> <servlet-class>com.yourpackage.IndexWssServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>IndexWssServlet</servlet-name> <url-pattern>/index.wss</url-pattern> </servlet-mapping> <!-- 或者针对所有.wss后缀的映射 --> <servlet-mapping> <servlet-name>WssDispatcherServlet</servlet-name> <url-pattern>*.wss</url-pattern> </servlet-mapping>
如果没有这类配置,服务器自然不知道该把index.wss请求转发给哪个Servlet处理。
2. 确认应用的部署状态
登录WebSphere控制台,检查TestIbmCloudEar应用的部署状态:
- 查看应用是否处于已启动状态,有没有部署失败的提示
- 检查服务器日志(比如
SystemOut.log),看是否有类加载失败、Servlet初始化错误等异常信息——这些问题可能导致Servlet无法被注册,进而触发404
3. 验证路径大小写匹配
WebSphere默认对URL路径是区分大小写的:
- 你的
context-root配置的是全小写的oscwi_eenablement,访问URL的这部分是匹配的,但要确认web.xml中Servlet映射的url-pattern是否和/index.wss完全一致(比如有没有写成/Index.wss) - 同时检查WAR包内是否存在
index.wss静态文件?不过根据错误信息,应该是期望Servlet处理,而非静态资源
4. 检查服务器端口与访问地址的正确性
你提到尝试了不同的活动端口,需要确认:
9081确实是当前WebSphere服务器的HTTP服务端口(可以在控制台的服务器 > 服务器类型 > WebSphere应用服务器 > [你的服务器] > 端口中查看)- 确保访问时没有额外的路径前缀,比如服务器是否配置了虚拟主机的别名,导致实际访问路径需要调整
5. 排查类加载与依赖问题
如果Servlet类存在,但无法被正确加载,也会导致映射失效:
- 检查
WEB-INF/lib下的依赖包是否完整,有没有缺失Servlet相关的依赖(不过WebSphere自带Servlet API,通常不需要打包) - 检查应用的类加载策略(控制台中应用的类加载顺序),如果选择了
父类加载器优先,可能导致自定义Servlet无法被优先加载
内容的提问来源于stack exchange,提问作者Hemalata Mohanta
相关产品推荐
相关产品推荐

