我已经在PCF和Eureka服务器中部署了我的2个Spring应用程序以供发现。我在应用程序中有@EnableEurekaClient,它们可以在PCF中的Eureka服务器中看到
当我使用FeignClient访问另一个应用程序时,我得到了一个错误
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] feign.FeignException: status 302 reading MyService#dummy(); content:
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at feign.FeignException.errorStatus(FeignException.java:62)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:91)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:138)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at com.sun.proxy.$Proxy140.dummy(Unknown Source)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at com.c2m.sigma.rest.controller.MyController.sendNotification(MyController.java:70)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at java.lang.reflect.Method.invoke(Method.java:498)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
2017-11-23T16:54:19.745+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
2017-11-23T16:54:19.746+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
2017-11-23T16:54:19.747+05:30 [RTR/1] [OUT] com.apps.np.sdppcf.com - [2017-11-23T11:24:19.486+0000] "POST /my-rest-services/api/Launch/SendNotification HTTP/1.1" 200 1235 197 "-" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36" "10.192.230.112:47060" "10.192.225.14:61138" x_forwarded_for:"10.111.136.194" x_forwarded_proto:"https" vcap_request_id:"38c0d6e1-4431-4a68-604f-5330a48a53bd" response_time:0.25981493 app_id:"8d2a0aba-8378-441f-9ecd-5f6904bcdf65" app_index:"0" x_b3_traceid:"aafdb180106cebde" x_b3_spanid:"aafdb180106cebde" x_b3_parentspanid:"-"
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
2017-11-23T16:54:19.747+05:30 [APP/PROC/WEB/0] [ERR] at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)我的feignClient如下。我在这里发帖时重新命名了这些服务
@FeignClient(name = "my-feign-services")
public interface MyService {
@RequestMapping(value = "/updateValues", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public String updateValues(@RequestBody ModelWrapper odelWrapper);
@RequestMapping(value = "/dummy", method = RequestMethod.GET)
public String dummy();
}我还启用了Security,它还允许匿名请求。
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().disable().authorizeRequests()
.antMatchers("/my-feign-services/**").anonymous()
.and()
.authorizeRequests().anyRequest()
.authenticated().and().csrf().disable();
}FeignClient没有在PCF中工作的任何原因。在本地主机上,它工作得很好,我可以很容易地在这两个服务之间进行通信,但在PCF中也是失败的。
我在配置类中使用FeignLogger启用了假装日志记录,并添加了假装客户端。日志中的位置是正确的,但是错误302和:content失败了。
最新情况:
在配置类中添加URL之后,它就工作了。在Cloud中平台团队获得Spring服务之前,这是一个暂停间隙安排。
发布于 2017-11-28 06:05:23
我也尝试通过添加一个新的虚拟服务来进行调试,同样的FeignException也失败了。看起来,PCF中的服务注册中心有一些问题。我有一个备份代码,我将我的其他代码迁移到这里并进行了测试,运行良好。我能够在没有错误的情况下进行MS通信,并且也收到了响应.
发布于 2017-11-24 02:51:32
302错误指示重定向。您能否尝试查看响应上的Location头?很有可能你没有假装被配置为跟随重定向。
发布于 2020-08-26 13:20:07
不确定原因,但假装核心只考虑不出错,HTTP状态在200到299之间。
所有其他状态都抛出一个ErrorDecoder (除了具有特殊待遇的404 )
我也有同样的问题使用假的,我已经定制了我的FeignErrorHandler,以妥善处理它。
@Bean
public MyClient myClient() {
return Feign.builder()
.errorDecoder(new CustomFeignErrorHandler()) // <== custom handler here
.encoder(new JacksonEncoder())
.decoder(new JacksonDecoder())
.logger(new Slf4jLogger())
.target(myClient.class, url);
}https://stackoverflow.com/questions/47454753
复制相似问题