我试图通过RestTemplate
直接给出URL来调用启用Zuul
的服务器。例如:RestTemplate.getForObject(“http://localhost:8090/emp-api”,employee[].class);
但它给了我一个错误:
java.lang.IllegalStateException:org.springframework.cloud.netflix.ribbon.ribbonLoadBalancerClient.execute上没有可用于localhost的实例(RibbonLoadBalancerClient.java:90)~[spring-cloud-netflix-core-1.2.3.release.jar:1.2.3.release]
详细问题:我有四个项目(Github link(branch-master):https://Github.com/vickygupta0017/microservice-poc)
>
微服务-使用者(spring-mvc)端口:8087
如果我直接从浏览器(“http://localhost:8090/emp-api”)调用Zuul Server
,则它将请求成功重定向到生产者。但如果我通过RestTemplate
从使用者调用此URL,则它将给我此错误。
有关信息:如果我不使用zuul服务器,那么我可以使用resttemplate
成功地从“microservice-consumer”调用“microservice-producer”。
我已经成功地执行了您的代码,并做了以下更改,删除了
enablediscovery和LoadBalanced注释
如果启用了这一功能,那么rest模板将始终转到eureka进行发现,因为您使用的是代理服务器,那么您的使用者就不需要发现,因为您给出了绝对路径,也可以从application.yml中删除eureka配置。
package com.eureka.discovery.client;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import com.eureka.discovery.client.bo.Employee;
@SpringBootApplication
@RestController
//@EnableDiscoveryClient
public class UserApplication {
@Bean
//@Loadbalancer
RestTemplate restTemplate(){
return new RestTemplate();
}
@Autowired
RestTemplate restTemplate;
@RequestMapping("/hi")
public String hi() {
Employee[] employeeList = this.restTemplate.getForObject("http://localhost:8090/emp-api", Employee[].class);
return String.format("%s, %s!", "Testing", "Abhay");
}
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
问题内容: 我发现我在Web框架和Web服务器之间感到困惑。 我们可以说node.js是Web服务器吗???我对Web服务器/框架感到很困惑。 如果以某种方式,node.js是一种Web服务器,而不是webframework(Express),那么为什么在有用的实践中我们为什么需要将整个node.js放在Nginx服务器之上? 谁可以帮助??? 套件 问题答案: 网络服务器 Web服务器可以指帮助
我有一个关于SSLConnection的问题,在java中,我为客户端编写了下面的代码(这个应用程序必须连接到服务器,我有支持ssl的服务器),但我得到了这样的错误“javax.net.ssl.sslException:Connection Hays Shutdown:javax.net.ssl.sslhandShakeException:sun.security.validator.valida
我的Spring Boot初始化遇到了麻烦。我在一个简单的Spring Boot项目中有这个结构。
我的Web Server是用Golang编码的,并且支持HTTPS。我希望利用Web Server中的HTTP/2 Server Push功能。以下链接解释了如何将HTTP Server转换为Support HTTP/2:-https://www.ianlewis.org/en/http2-and-go 但是,不清楚如何在Golang中实现Server Push通知。 -我应该如何添加Server
问题内容: 如何通过 JNI 从Node.js调用Java ?有没有例子? 问题答案: 看起来很棘手。Node.JS在Google Chrome JavaScript引擎V8上运行。您将要做的是创建一个V8 C ++绑定(一个v8 c ++崩溃课程 显示了一个示例),该绑定启动JVM并执行所有JNI处理。 我认为让JavaServer和Node.js通过网络进行通信可能更好(有人写了一个使用Rab
问题内容: 我正在寻找一种CAS服务器,该服务器支持通过OAuth进行单点登录的Facebook / Twitter身份验证。我已经检查了JASIG- CAS服务器,但它似乎不支持它们。我的Java Web应用程序基于Spring Security 3和其他外部PHP应用程序。是否存在支持Facebook / Twitter的CAS服务器?或在JASIG上对此支持的扩展(或示例代码)? 问题答案: