代码之家  ›  专栏  ›  技术社区  ›  Richard

Spring启动客户端未能向管理员注册

  •  0
  • Richard  · 技术社区  · 7 年前

    pom.xml

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-boot-admin.version>2.1.0</spring-boot-admin.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui</artifactId>
        </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-test</artifactId>
              <scope>test</scope>
          </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-dependencies</artifactId>
                <version>${spring-boot-admin.version}</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>
    

    application.properties

    server.port = 9090
    spring.application.name = adminserver
    

    DemoApplication.java

    @SpringBootApplication
    @EnableAdminServer
    public class DemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
    

    这很有效。我可以导航到 http://localhost:9090/#/applications 看到管理服务器就好了。 enter image description here

    问题是当我尝试将一个客户端应用程序注册到服务器时。以下是我的客户端应用程序的详细信息:

    pom.xml

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.0.RC1</version>
        <relativePath/>
    </parent>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-hateoas</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>1.5.7</version>
        </dependency>
    </dependencies>
    

    application.yml

    spring:
      profiles: default
      boot:
        admin:
          url: http://localhost:9090
    management:
      context-path: /actuator
    

    http://localhost:8081/actuator/health 并查看所有的健康信息。但我最终在控制台中也会出现以下错误:

    DEBUG --- [   registrationTask1] de.codecentric.boot.admin.client.registration.ApplicationRegistrator                       : Failed to register application as Application [name=ClientApp, managementUrl=http://richard-desktop:8081/actuator/, healthUrl=http://richard-desktop:8081/actuator/health/, serviceUrl=http://richard-desktop:8081/] at spring-boot-admin ([http://localhost:9090/api/applications]): 404 Not Found 
    DEBUG --- [   registrationTask1] de.codecentric.boot.admin.client.registration.ApplicationRegistrator                       : Failed to register application as Application [name=ClientApp, managementUrl=http://richard-desktop:8081/actuator/, healthUrl=http://richard-desktop:8081/actuator/health/, serviceUrl=http://richard-desktop:8081/] at spring-boot-admin ([http://localhost:9090/api/applications]): 404 Not Found 
    DEBUG --- [   registrationTask1] de.codecentric.boot.admin.client.registration.ApplicationRegistrator                       : Failed to register application as Application [name=ClientApp, managementUrl=http://richard-desktop:8081/actuator/, healthUrl=http://richard-desktop:8081/actuator/health/, serviceUrl=http://richard-desktop:8081/] at spring-boot-admin ([http://localhost:9090/api/applications]): 404 Not Found 
    

    我做错了什么?

    1 回复  |  直到 7 年前
        1
  •  5
  •   bittu    7 年前

    基本上,由于SpringBootAdminServer(2.1.0)和客户端(1.5.7)的版本不同,它无法注册。

    只需在调试日志中启动服务器/客户机,就可以获得关于它试图访问哪个url的更多提示。

    这里需要注意的是,由于许多端点的版本不可编译性,我们不会获得所有信息。执行器模块在1.X和2.X之间完全改变。

    根据以上观点,以下是解决此问题的方法,但有一些限制:

    客户端Java文件:

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

    客户端属性文件:

    server.port=8081
    spring.boot.admin.url=http://localhost:8080
    spring.boot.admin.api-path=/instances
    management.security.enabled=false