Ошибка предварительного условия при вызове обмена или выполнения restTemplate

Я пытаюсь вызвать службу отдыха. И оставшийся клиент, и служба отдыха работают на моей машине в разных портах. Оба метода выполнения и обмена вызывают исключение нулевого указателя. Мой оставшийся клиент — это фильтр Netflix Zuul (который сам зарегистрирован в агенте Netflix Eureka Discovery). Я надеюсь, что это ничего не изменит, но в конце трассировки стека, кажется, упоминаются "ленточные" библиотеки. Так что я предполагаю, что ошибка может быть связана с этим.

У меня есть только @Autowired объект RestTemplate в моем Rest Client. Я не использовал аннотацию @LoadBalanced.

Когда я использую идентификатор «Eureka Service» вместо номера localhost:port, вызов выполняется успешно. В чем может быть корень?

restTemplate.exchange("http://localhost:8085/helloWorld, HttpMethod.GET, entity, HttpServletResponse.class);

Дорожка стека исключений:

Caused by: java.lang.NullPointerException: null
       at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:210) ~[guava-18.0.jar:na]
       at com.google.common.cache.LocalCache.get(LocalCache.java:3936) ~[guava-18.0.jar:na]
       at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) ~[guava-18.0.jar:na]
       at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824) ~[guava-18.0.jar:na]
       at com.netflix.loadbalancer.LoadBalancerStats.getServerStats(LoadBalancerStats.java:167) ~[ribbon-loadbalancer-2.0-RC13.jar:na]
       at com.netflix.loadbalancer.LoadBalancerStats.getSingleServerStat(LoadBalancerStats.java:354) ~[ribbon-loadbalancer-2.0-RC13.jar:na]
       at com.netflix.loadbalancer.LoadBalancerContext.getServerStats(LoadBalancerContext.java:621) ~[ribbon-loadbalancer-2.0-RC13.jar:na]
       at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:71) ~[spring-cloud-netflix-core-1.0.0.RELEASE.jar:1.0.0.RELEASE]
       at org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor.intercept(LoadBalancerInterceptor.java:46) ~[spring-cloud-commons-1.0.2.RELEASE.jar:1.0.2.RELEASE]
       at org.springframework.http.client.InterceptingClientHttpRequest$RequestExecution.execute(InterceptingClientHttpRequest.java:84) ~[spring-web-4.1.5.RELEASE.jar:4.1.5.RELEASE]
       at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:69) ~[spring-web-4.1.5.RELEASE.jar:4.1.5.RELEASE]
       at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) ~[spring-web-4.1.5.RELEASE.jar:4.1.5.RELEASE]
       at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) ~[spring-web-4.1.5.RELEASE.jar:4.1.5.RELEASE]
       at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:568) ~[spring-web-4.1.5.RELEASE.jar:4.1.5.RELEASE]
       at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:529) ~[spring-web-4.1.5.RELEASE.jar:4.1.5.RELEASE]
       at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:447) ~[spring-web-4.1.5.RELEASE.jar:4.1.5.RELEASE]

person yathirigan    schedule 03.08.2015    source источник


Ответы (1)


Я пропустил внедрение restTemplate в свой класс конфигурации. Как только я добавил следующий фрагмент кода в свой класс конфигурации, он заработал нормально. Был вызван оставшийся вызов.

 @Bean
   RestTemplate restTemplate() {
       return new RestTemplate();
   }

Не знаю, как нормально работал вызов rest при использовании идентификатора службы Eureka вместо URL-адреса.

person yathirigan    schedule 04.08.2015