简体   繁体   English

Spring-Boot-Admin服务器无法从Eureka注册表注册客户端

[英]Spring-Boot-Admin server fails to register clients from Eureka registry

I just created a new Spring-Boot-Admin project from the Initializr, and followed the instructions from here: http://codecentric.github.io/spring-boot-admin/2.0.0/ 我刚刚从Initializr创建了一个新的Spring-Boot-Admin项目,并按照这里的说明进行操作: http//codecentric.github.io/spring-boot-admin/2.0.0/

Here is my class: 这是我的班级:

@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableAdminServer
public class ServiceAdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceAdminApplication.class, args);
    }
}

Here is my properties file: 这是我的属性文件:

eureka.instance.leaseRenewalIntervalInSeconds=10
eureka.instance.health-check-url-path=/actuator/health
eureka.client.registryFetchIntervalSeconds=5
eureka.client.serviceUrl.defaultZone=http://my.eureka.url:8580/eureka/

management.endpoints.web.exposure.include=*  
management.endpoint.health.show-details=ALWAYS

I have a working Eureka registry which has a number of Spring-Boot applications registered in it. 我有一个工作的Eureka注册表,其中注册了许多Spring-Boot应用程序。 I know this is working because they are able to find each other and communicate via the Eureka registry. 我知道这是有效的,因为他们能够找到彼此并通过Eureka注册表进行通信。

When I start my new SBA app, I can see it register itself within the Eureka registry, so it is finding Eureka. 当我启动新的SBA应用程序时,我可以看到它在Eureka注册表中注册,因此它正在寻找Eureka。 However, when I open the SBA UI, it is empty, just saying "No applications registered." 但是,当我打开SBA UI时,它是空的,只是说“没有注册应用程序”。 On my console, I can see the following stack trace over and over. 在我的控制台上,我可以一遍又一遍地看到以下堆栈跟踪。

java.io.IOException: An established connection was aborted by the software in your host machine at sun.nio.ch.SocketDispatcher.write0(Native Method) ~[na:1.8.0_151] at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51) ~[na:1.8.0_151] at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[na:1.8.0_151] at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[na:1.8.0_151] at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) ~[na:1.8.0_151] at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1276) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(Socket java.io.IOException:已建立的连接被主机中的软件在sun.nio.ch.SocketDispatcher.write中的sun.nio.ch.SocketDispatcher.write0(本机方法)〜[na:1.8.0_151]中止(SocketDispatcher.java:51)〜[na:1.8.0_151] at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)〜[na:1.8.0_151] at sun.nio.ch.IOUtil.write (IOUtil.java:65)〜[na:1.8.0_151]在org.apache.tomcat.util.net的sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)〜[na:1.8.0_151] org.apache.tomcat.util.net.NioBlockingSelector.write。(NioChannel.java:101 〜[tomcat-embed-core-8.5.31.jar:8.5.31]在org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157)〜[tomcat-embed-core-8.5.31 .jar:8.5.31] org.apache.tomcat.util.net.NioEndpoint $ NioSocketWrapper.doWrite(NioEndpoint.java:1276)~ [tomcat-embed-core-8.5.31.jar:8.5.31] at org .apache.tomcat.util.net.SocketWrapperBase.doWrite(插座 WrapperBase.java:670) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:607) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:597) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.flush(Http11OutputBuffer.java:646) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.coyote.http11.filters.ChunkedOutputFilter.flush(ChunkedOutputFilter.java:169) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:252) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.coyote.http11.Http11Processor.flush(Http11Processor.java:1564) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:352) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.coyote.Response.action(Response.java:173) ~[tomcat-emb 在org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:607)〜[tomcat-embed]中的WrapperBase.java:670)~ [tomcat-embed-core-8.5.31.jar:8.5.31] -core-8.5.31.jar:8.5.31]在org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:597)〜[tomcat-embed-core-8.5.31.jar:8.5。 31]在org.apache.coyote.http11.Http11OutputBuffer $ SocketOutputBuffer.flush(Http11OutputBuffer.java:646)〜[tomcat-embed-core-8.5.31.jar:8.5.31] org.apache.coyote.http11。 filter.ChunkedOutputFilter.flush(ChunkedOutputFilter.java:169)〜[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:252)~ [tomcat-embed-core-8.5.31.jar:8.5.31]在org.apache.coyote.http11.Http11Processor.flush(Http11Processor.java:1564)〜[tomcat-embed-core-8.5.31.jar: 8.5.31] org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:352)〜[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.coyote.Response.action( Response.java:173)~ [tomcat-emb ed-core-8.5.31.jar:8.5.31] at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:317) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:284) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118) ~[tomcat-embed-core-8.5.31.jar:8.5.31] at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:297) ~[na:1.8.0_151] at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141) ~[na:1.8.0_151] at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229) ~[na:1.8.0_151] at org.springframework.util.StreamUtils.copy(StreamUtils.java:121) ~[spring-core-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.java:103) ~[spring-web-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.ja ed-core-8.5.31.jar:8.5.31] at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:317)~ [tomcat-embed-core-8.5.31.jar:8.5.31 ] org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:284)〜[tomcat-embed-core-8.5.31.jar:8.5.31] org.apache.catalina.connector.CoyoteOutputStream.flush (CoyoteOutputStream.java:118)〜[tomcat-embed-core-8.5.31.jar:8.5.31] at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:297)〜[na:1.8.0_151]在sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)〜[na:1.8.0_151] at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)〜[na:1.8.0_151] at org orsp.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter。)中的.springframework.util.StreamUtils.copy(StreamUtils.java:121)~ [spring-core-5.0.6.RELEASE.jar:5.0.6.RELEASE]。 java:103)〜[spring-web-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.ja va:43) ~[spring-web-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:224) ~[spring-web-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler$HttpMessageConvertingHandler.sendInternal(ResponseBodyEmitterReturnValueHandler.java:199) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler$HttpMessageConvertingHandler.send(ResponseBodyEmitterReturnValueHandler.java:189) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.sendInternal(ResponseBodyEmitter.java:189) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.send(ResponseBodyEmitter.java:183) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE] va:43)〜[spring-web-5.0.6.RELEASE.jar:5.0.6.RELEASE] org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:224)~ [spring-web-5.0 .6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler $ HttpMessageConvertingHandler.sendInternal(ResponseBodyEmitterReturnValueHandler.java:199)〜[spring-webmvc-5.0.6。 RELEASE.jar:5.0.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler $ HttpMessageConvertingHandler.send(ResponseBodyEmitterReturnValueHandler.java:189)~ [spring-webmvc-5.0.6.RELEASE.jar :5.0.6.RELEASE]在org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.sendInternal(ResponseBodyEmitter.java:189)〜[spring-webmvc-5.0.6.RELEASE.jar:5.0.6。发布在org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter.send(ResponseBodyEmitter.java:183)〜[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:133) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$SseEmitterSubscriber.send(ReactiveTypeHandler.java:341) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler$AbstractEmitterSubscriber.run(ReactiveTypeHandler.java:283) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_151] 在Org.springframework的org.springframework.web.servlet.mvc.method.annotation.SseEmitter.send(SseEmitter.java:133)〜[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]。 org.springframework.web.servlet上的web.servlet.mvc.method.annotation.ReactiveTypeHandler $ SseEmitterSubscriber.send(ReactiveTypeHandler.java:341)〜[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE] java.lang.Thread.run中的.mvc.method.annotation.ReactiveTypeHandler $ AbstractEmitterSubscriber.run(ReactiveTypeHandler.java:283)〜[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE](Thread。 java:748)[na:1.8.0_151]

The 2.0.0 doesn't include the cloud features. 2.0.0不包括云功能。 Please use 2.0.1 (currently only snpashots available) 请使用2.0.1(目前只提供snpashots)

More details to joshiste's answer. joshiste答案的更多细节。

Change dependency version to 2.0.1-SNAPSHOT: 将依赖项版本更改为2.0.1-SNAPSHOT:

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.0.1-SNAPSHOT</version>
</dependency>

Add repository element: 添加存储库元素:

<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>                        
        <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    </repository>
</repositories>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM