Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用discovery server注册服务的正确方法_Java_Spring_Spring Cloud_Netflix - Fatal编程技术网

Java 使用discovery server注册服务的正确方法

Java 使用discovery server注册服务的正确方法,java,spring,spring-cloud,netflix,Java,Spring,Spring Cloud,Netflix,目前,我正在尝试第一次创建一个带有微服务的api。 为此,我将Java与Spring和Netflix堆栈一起使用。 我遇到的问题是将服务注册到discovery server(工作正常) 发现服务器: 爪哇: 查找服务器的yml: eureka: instance: hostname: localhost client: # Not a client, don't register with yourself!!!!!!!!!!!! registerWithEureka

目前,我正在尝试第一次创建一个带有微服务的api。 为此,我将Java与Spring和Netflix堆栈一起使用。 我遇到的问题是将服务注册到discovery server(工作正常)

发现服务器:

爪哇:

查找服务器的yml:

eureka:
  instance:
    hostname: localhost
  client:  # Not a client, don't register with yourself!!!!!!!!!!!!
    registerWithEureka: false
    fetchRegistry: false
  server:
      waitTimeInMsWhenSyncEmpty: 0

server:
  port: 1111   # HTTP (Tomcat) port
我要注册的服务: 爪哇:

此服务的yml:

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:1111/eureka/

server:
    port: 8888
spring:
    application:
        name: helloWorld-service
此服务的引导:

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:1111/eureka/

server:
    port: 8888
spring:
    application:
        name: helloWorld-service
错误消息的一部分(非常长,所以我只包括希望正确的重要部分:

2017-03-31 12:12:39.258  WARN 228 --- [           main] com.netflix.discovery.DiscoveryClient    : Action: Refresh  => returned status of 401 from http://localhost:1111/eureka/apps/
2017-03-31 12:12:39.260 ERROR 228 --- [           main] com.netflix.discovery.DiscoveryClient    : Can't get a response from http://localhost:1111/eureka/apps/
Can't contact any eureka nodes - possibly a security group issue?

java.lang.RuntimeException: Bad status: 401
    at com.netflix.discovery.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1155)
    at com.netflix.discovery.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1060)
    at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:835)
    at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:746)
    at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:320)
    at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:197)
    at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:193)
    at com.netflix.discovery.DiscoveryManager.initComponent(DiscoveryManager.java:84)
    at org.springframework.cloud.netflix.eureka.DiscoveryManagerInitializer.init(DiscoveryManagerInitializer.java:39)
    at org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration.start(EurekaDiscoveryClientConfiguration.java:126)
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112)
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:770)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:140)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
    at heiseTut.helloService.HelloServiceApplication.main(HelloServiceApplication.java:17)

2017-03-31 12:12:39.260 ERROR 228 --- [           main] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_BOOTSTRAP/DESKTOP-S716PSE - was unable to refresh its cache! status = Bad status: 401

.
. other error messages
.

2017-03-31 12:12:39.356  INFO 228 --- [       Thread-1] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@2bbaf4f0: startup date [Fri Mar 31 12:12:36 CEST 2017]; root of context hierarchy
Exception in thread "main" java.lang.IllegalStateException: Tomcat connector in failed state
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:157)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:288)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
    at heiseTut.helloService.HelloServiceApplication.main(HelloServiceApplication.java:17)
2017-03-31 12:12:39.258警告228---[main]com.netflix.DiscoveryClient:Action:Refresh=>从返回的401状态http://localhost:1111/eureka/apps/
2017-03-31 12:12:39.260错误228---[main]com.netflix.discovery.DiscoveryClient:无法从http://localhost:1111/eureka/apps/
无法联系任何eureka节点-可能是安全组问题?
java.lang.RuntimeException:错误状态:401
位于com.netflix.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1155)
位于com.netflix.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1060)
位于com.netflix.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:835)
位于com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:746)
位于com.netflix.discovery.DiscoveryClient.(DiscoveryClient.java:320)
在com.netflix.discovery.DiscoveryClient.(DiscoveryClient.java:197)
在com.netflix.discovery.DiscoveryClient.(DiscoveryClient.java:193)
位于com.netflix.DiscoveryManager.initComponent(DiscoveryManager.java:84)
位于org.springframework.cloud.netflix.eureka.DiscoveryManagerInitializer.init(DiscoveryManagerInitializer.java:39)
位于org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration.start(EurekaDiscoveryClientConfiguration.java:126)
位于org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
位于org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
位于org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
位于org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
位于org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112)
位于org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:770)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:140)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
位于org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
位于heiseTut.helloService.HelloServiceApplication.main(HelloServiceApplication.java:17)
2017-03-31 12:12:39.260错误228---[main]com.netflix.DiscoveryClient:DiscoveryClient\u BOOTSTRAP/DESKTOP-S716PSE-无法刷新其缓存!状态=错误状态:401
.
.其他错误消息
.
2017-03-31 12:12:39.356信息228---[Thread-1]s.c.a.annotation配置应用程序上下文:关闭org.springframework.context.annotation。AnnotationConfigApplicationContext@2bbaf4f0:启动日期[Fri Mar 31 12:12:36 CEST 2017];上下文层次结构的根
线程“main”java.lang.IllegalStateException中出现异常:Tomcat连接器处于失败状态
位于org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:157)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:288)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
位于org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
位于heiseTut.helloService.HelloServiceApplication.main(HelloServiceApplication.java:17)

感谢您的帮助和回复。

我找到了一个临时解决方案。 至少在开发环境中,您可以在discovery server的application.yml中关闭安全性:

security:
    basic:
        enabled: false

我找到了一个临时解决办法。 至少在开发环境中,您可以在discovery server的application.yml中关闭安全性:

security:
    basic:
        enabled: false

你必须在Eureka服务器的类路径上具有spring安全性。你想保护你的Eureka服务器有什么原因吗?我想你至少想打开Eureka服务器端点。你还可以在客户端的Eureka url中提供用户名和密码。你必须在Eureka服务器的类路径上具有spring安全性。是吗您希望保护您的Eureka服务器的原因是什么?我认为您希望至少打开Eureka服务器端点。您还可以在Eureka url中提供用户名和密码