无法连接到 Eureka 服务器。异常:java.net.ConnectException:连接被拒绝:连接

Posted

技术标签:

【中文标题】无法连接到 Eureka 服务器。异常:java.net.ConnectException:连接被拒绝:连接【英文标题】:Cannot connect to Eureka server. Exception: java.net.ConnectException: Connection refused: connect 【发布时间】:2019-09-30 13:30:50 【问题描述】:

我在 javabrains.io 上做微服务教程,一切都很好,直到我尝试在其中一个微服务中实现 Eureka 服务器。

我的主要课程很简单:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class DiscoveryServerApplication 

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


我的 POM 看起来像这样:

    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>pl.Grzesiek</groupId>
    <artifactId>discovery-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>discovery-server</name>
    <description>Demo project for Spring Boot</description>



    <dependencies>
        <dependency>
            <!-- Setup Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <!-- Setup Spring MVC & REST, use Embedded Tomcat -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <!-- Spring Cloud starter -->
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2.11</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>

    <!-- Spring Cloud dependencies -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

运行应用程序后,我收到了巨大的异常注释(我只发布了开头):

2019-05-13 16:42:36.026  INFO 8704 --- [           main] o.s.core.annotation.AnnotationUtils      : Failed to introspect annotations on class org.springframework.cloud.netflix.eureka.config.EurekaDiscoveryClientConfigServiceBootstrapConfiguration: java.lang.IllegalStateException: Could not obtain annotation attribute value for public abstract java.lang.Class[] org.springframework.boot.autoconfigure.condition.ConditionalOnClass.value()
    2019-05-13 16:42:37.057  INFO 8704 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'configurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$99f95863] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)

    .   ____          _            __ _ _
    /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
    \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
    '  |____| .__|_| |_|_| |_\__, | / / / /
    =========|_|==============|___/=/_/_/_/
    :: Spring Boot ::        (v2.1.4.RELEASE)

    2019-05-13 16:42:37.885  INFO 8704 --- [           main] p.G.d.DiscoveryServerApplication         : No active profile set, falling back to default profiles: default
    2019-05-13 16:42:39.885  WARN 8704 --- [           main] o.s.boot.actuate.endpoint.EndpointId     : Endpoint ID 'service-registry' contains invalid characters, please migrate to a valid format.
    2019-05-13 16:42:40.542  INFO 8704 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=0a227739-edaa-382b-b6cd-a363789789b9
    2019-05-13 16:42:40.776  INFO 8704 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$99f95863] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
    2019-05-13 16:42:41.792  INFO 8704 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
    2019-05-13 16:42:41.854  INFO 8704 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2019-05-13 16:42:41.854  INFO 8704 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.17]
    2019-05-13 16:42:42.573  INFO 8704 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2019-05-13 16:42:42.573  INFO 8704 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 4656 ms
    2019-05-13 16:42:42.917  WARN 8704 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
    2019-05-13 16:42:42.917  INFO 8704 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
    2019-05-13 16:42:43.057  INFO 8704 --- [           main] c.netflix.config.DynamicPropertyFactory  : DynamicPropertyFactory is initialized with configuration sources: com.netflix.config.ConcurrentCompositeConfiguration@413bef78
    2019-05-13 16:42:46.370  INFO 8704 --- [           main] c.s.j.s.i.a.WebApplicationImpl           : Initiating Jersey application, version 'Jersey: 1.19.1 03/11/2016 02:08 PM'
    2019-05-13 16:42:46.541  INFO 8704 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
    2019-05-13 16:42:46.541  INFO 8704 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
    WARNING: An illegal reflective access operation has occurred
    WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/C:/Users/Grzegorz/.m2/repository/com/thoughtworks/xstream/xstream/1.4.10/xstream-1.4.10.jar) to field java.util.TreeMap.comparator
    WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
    WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
    WARNING: All illegal access operations will be denied in a future release
    2019-05-13 16:42:46.854  INFO 8704 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
    2019-05-13 16:42:46.854  INFO 8704 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
    2019-05-13 16:42:47.666  WARN 8704 --- [           main] o.s.c.n.a.ArchaiusAutoConfiguration      : No spring.application.name found, defaulting to 'application'
    2019-05-13 16:42:47.666  WARN 8704 --- [           main] c.n.c.sources.URLConfigurationSource     : No URLs will be polled as dynamic configuration sources.
    2019-05-13 16:42:47.666  INFO 8704 --- [           main] c.n.c.sources.URLConfigurationSource     : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
    2019-05-13 16:42:47.995  INFO 8704 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
    2019-05-13 16:42:48.916  INFO 8704 --- [           main] o.s.c.n.eureka.InstanceInfoFactory       : Setting initial instance status as: STARTING
    2019-05-13 16:42:48.994  INFO 8704 --- [           main] com.netflix.discovery.DiscoveryClient    : Initializing Eureka in region us-east-1
    2019-05-13 16:42:49.354  INFO 8704 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON encoding codec LegacyJacksonJson
    2019-05-13 16:42:49.354  INFO 8704 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using JSON decoding codec LegacyJacksonJson
    2019-05-13 16:42:49.354  INFO 8704 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML encoding codec XStreamXml
    2019-05-13 16:42:49.354  INFO 8704 --- [           main] c.n.d.provider.DiscoveryJerseyProvider   : Using XML decoding codec XStreamXml
    2019-05-13 16:42:49.604  INFO 8704 --- [           main] c.n.d.s.r.aws.ConfigClusterResolver      : Resolving eureka endpoints via configuration
    2019-05-13 16:42:49.948  INFO 8704 --- [           main] com.netflix.discovery.DiscoveryClient    : Disable delta property : false
    2019-05-13 16:42:49.948  INFO 8704 --- [           main] com.netflix.discovery.DiscoveryClient    : Single vip registry refresh property : null
    2019-05-13 16:42:49.948  INFO 8704 --- [           main] com.netflix.discovery.DiscoveryClient    : Force full registry fetch : false
    2019-05-13 16:42:49.948  INFO 8704 --- [           main] com.netflix.discovery.DiscoveryClient    : Application is null : false
    2019-05-13 16:42:49.948  INFO 8704 --- [           main] com.netflix.discovery.DiscoveryClient    : Registered Applications size is zero : true
    2019-05-13 16:42:49.948  INFO 8704 --- [           main] com.netflix.discovery.DiscoveryClient    : Application version is -1: true
    2019-05-13 16:42:49.948  INFO 8704 --- [           main] com.netflix.discovery.DiscoveryClient    : Getting all instance registry info from the eureka server
    2019-05-13 16:42:52.135 ERROR 8704 --- [           main] c.n.d.s.t.d.RedirectingEurekaHttpClient  : Request execution error

    com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
    at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
    at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.1.jar:1.19.1]
    at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.1.jar:1.19.1]
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.1.jar:1.19.1]
    at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.19.1.jar:1.19.1]
    at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509) ~[jersey-client-1.19.1.jar:1.19.1]
    at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplicationsInternal(AbstractJerseyEurekaHttpClient.java:194) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplications(AbstractJerseyEurekaHttpClient.java:165) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.java:118) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:79) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:120) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1051) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.java:965) ~[eureka-client-1.9.2.jar:1.9.2]
    at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:414) ~[eureka-client-1.9.2.jar:1.9.2]
at com.netflix.discovery.DiscoveryClient.<init>(DiscoveryClient.java:269) ~[eureka-client-1.9.2.jar:1.9.2]
at org.springframework.cloud.netflix.eureka.CloudEurekaClient.<init>(CloudEurekaClient.java:63) ~[spring-cloud-netflix-eureka-client-2.0.0.RELEASE.jar:2.0.0.RELEASE]
    at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration.eurekaClient(EurekaClientAutoConfiguration.java:269) ~[spring-cloud-netflix-eureka-client-2.0.0.RELEASE.jar:2.0.0.RELEASE]
    at org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration$$EnhancerBySpringCGLIB$$a1625182.CGLIB$eurekaClient$0(<generated>) ~[spring-cloud-netflix-eureka-client-2.0.0.RELEASE.jar:2.0.0.RELEASE]

然后继续……

有人遇到过同样的问题吗?我不知道可能是什么原因。

a 是什么原因...有人遇到同样的问题吗?

【问题讨论】:

【参考方案1】:

请将这些属性添加到您的应用程序属性或 yml 文件中。

eureka.client.register-with-eureka=false   
eureka.client.fetch-registry=false

更新:

如果上述配置不起作用,请尝试使用 camelCase。

eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false

YAML 版本:

eureka:
  client:
    fetchRegistry: 'false'
    registerWithEureka: 'false'

【讨论】:

谢谢!我有完全相同的问题。发生这种情况的任何原因? 这个错误背后的原因是 Eureka 客户端试图向 Eureka servere 注册和获取信息。这是因为 Spring Boot 中的 bean 自动配置功能。当您部署 Eureka 服务器时,您不需要自己注册。这就是我们禁用的原因。 如果它仍然不起作用。尝试使用camelCase:eureka.client.registerWithEureka=false eureka.client.fetchRegistry=false我必须这样做才能摆脱那个错误,不要问我为什么,我不知道。它只是工作。 如果上述方法都不起作用并且您使用的是 YAML,请检查缩进 我将以上 2 个属性添加到属性文件(camelCase 之一)并且还必须添加 server.port=8761 以将其用作 Eureka 的默认端口。我在 Mac 上的 STS v4 上使用它亲。【参考方案2】:

为工作的客户端添加以下属性到 application.properties 文件(不添加 defaultZone 属性):

eureka.instance.hostname=localhost

Eureka客户端似乎默认无法识别Eureka Server的主机名,因此需要手动配置。

【讨论】:

我有类似的问题,你的灵魂对我有用,谢谢;)【参考方案3】:

删除:

<dependency>
   <!-- Spring Cloud starter -->
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter</artifactId>
</dependency>

使用spring-cloud-starter-eureka-server 就足够了,但还要删除由dependencyManagement 控制的版本1.4.6.RELEASE。

【讨论】:

感谢您的建议,但它不会对运行应用程序产生任何影响。【参考方案4】:

只需将你的 eureka 服务器端口设置为 8761(默认):

server.port = 8761

【讨论】:

以上是关于无法连接到 Eureka 服务器。异常:java.net.ConnectException:连接被拒绝:连接的主要内容,如果未能解决你的问题,请参考以下文章

Zuul 网关无法连接到 Docker-Compose 下的 Eureka 服务注册表

无法从 Java WebService 连接到 MS Access 数据库

无法从 java 应用程序连接到 sqlserver

无法连接到 ejabberd 服务器:未知主机异常

如何修复 Android 模拟器中的“无法连接到相机服务”异常

当客户端甚至无法连接到 WCF 服务器时,为啥会出现“服务器堆栈跟踪”异常?