OpenFeign调用失败:HTTP Status 404 – Not Found

发布时间 2023-09-08 12:25:57作者: 勇敢-的心

【问题描述】

feign.FeignException$NotFound: [404 ] during [POST] to [http://app-websocket-service/app-websocket-service/app-websocket/sendOneMessage] [AppWebSocketFeign#sendOneMessage(AppWebSocketDTO)]: [<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} ... (431 bytes)]
at feign.FeignException.clientErrorStatus(FeignException.java:201)
at feign.FeignException.errorStatus(FeignException.java:177)
at feign.FeignException.errorStatus(FeignException.java:169)
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:92)
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:156)
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:80)
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:100)
at com.sun.proxy.$Proxy162.sendOneMessage(Unknown Source)

 

【原因分析】

在服务的消费端,有一个AppWebSocketFeign接口,是对调用第三方服务的接口封装;

在该接口的@FeignClident注解中,设置了value和path参数,其中value指的是微服务名称,path指的是该微服务的上下文根路径。

 

 在服务的消费方调用第三方服务时,会把这两个值都添加到请求的路径中的,找不到路径,很可能是因为在服务的提供方的工程配置文件中缺少了上下文根的配置信息:

在服务的提供方工程配置文件中发现,确实没有servlet:context-path:的配置