首页 > 解决方案 > 我的 Spring Cloud Config 服务器运行良好,但它不断抱怨无效参数“--spring.config.location=”

问题描述

我使用 SpringBoot 1.5.21.RELEASE 和 Spring Cloud Config“1.4.7.RELEASE”创建了一个新的 Spring Cloud Config 服务器。使用 Java 8 构建和运行。它配置了“本机”配置文件,因此它使用文件系统作为后端存储库。我的配置服务器正常启动,可以按预期接受所有客户端请求。我几乎没有连接到它的 SpringBoot 应用程序,并且可以正确获取各种配置文件和标签的配置属性。因此,从客户的角度来看,它显然工作得非常好!

但是,当仔细查看配置服务器的日志文件时,我们可以看到很多错误,抱怨在每次刷新和每个客户端请求期间都会出现“无效的参数语法:--spring.config.location=”。

我们还可以看到 Config Server 的健康状态为“down”,原因相同。

我通常不会明确定义属性“spring.config.location”,因为默认值对我来说总是很好。在这种情况下,我尝试使用配置服务器的配置文件所在的位置显式覆盖该属性。我试图覆盖 bootstrap.properties 以及命令行甚至环境变量中的值,但它没有解决任何问题。与我所有其他 SpringBoot 应用程序一样,我的配置位置位于标准“file:./config”文件夹下(也位于“classpath:/”下)。

我还有一些依赖项和配置可以将我的配置服务器连接到 SpringBoot 管理服务器,但即使我禁用它,我仍然会遇到相同的错误/行为。我想知道这可能是问题的原因。否则,配置服务器就像我在基础设施中创建和部署的所有其他应用程序一样,是一个完全正常和标准的 SpringBoot 应用程序。到目前为止,每个 SprintBoot 应用程序在标准位置 (./config) 下都有自己的一组属性文件,但我现在正尝试使用配置服务器。

下面是 Config Server 的 bootstrap.properties 文件的内容:

spring.config.name=config-server
spring.config.location=classpath:/,classpath:/config/,file:./,file:./config/

以下是“./config/config-server.properties”文件中定义的一些属性:

spring.profiles.active=native

spring.cloud.config.server.bootstrap=false
spring.cloud.config.server.native.addLabelLocations=false
spring.cloud.config.server.native.searchLocations=file:./config/repo/{label}/{application},file:./config/repo/{label}

app.name=Config Server
app.artifactId=config-server

spring.application.name=${app.name}
spring.application.admin.enabled=true
spring.application.admin.jmx-name=org.springframework.boot:type=Admin,name=SpringApplication

spring.main.sources=com.mycompany.packagepath.Application



server.display-name=${app.name}

server.port=10700
server.servlet-path=/
server.context-path=/


management.port=10701
management.security.enabled=false
management.context-path=/manage
management.security.roles=managers
management.info.defaults.enabled=true
management.info.build.enabled=true
management.info.env.enabled=true
management.info.git.enabled=true
management.info.git.mode=full


server.tomcat.accept-count=50
server.tomcat.max-connections=50
server.tomcat.max-threads=10
server.tomcat.min-spare-threads=2
server.tomcat.accesslog.enabled=true


logging.config=config/logback-spring.xml
## Path were to send output log files by default.
logging.path=logs
## Default log level.
logging.level.root=DEBUG

spring.jmx.enabled=true

endpoints.enabled=true
endpoints.sensitive=false
endpoints.shutdown.enabled=true
endpoints.shutdown.path=/shutdown
endpoints.shutdown.sensitive=false
endpoints.trace.enabled=false

endpoints.jmx.enabled=true
endpoints.jmx.domain=agentservice
endpoints.jmx.unique-names=true


security.basic.enabled=true
security.basic.realm=Spring
security.basic.path=/**
security.basic.authorize-mode=role
security.ignored=
security.require-ssl=false
security.sessions=stateless
security.user.name=user
security.user.password=user
security.user.role=USER

这是我可以在日志文件中看到的错误:

2019-06-25 18:25:15.443 +0000 DEBUG         [             registrationTask1] [sun.net.www.protocol.http.HttpURLConnection:61        ] -  sun.net.www.MessageHeader@f573b447 pairs: {POST /api/applications HTTP/1.1: null}{Accept: application/json}{Content-Type: application/json}{User-Agent: Java/1.8.0_191}{Host: configserverhost:10710}{Connection: keep-alive}{Content-Length: 208}
2019-06-25 18:25:15.444 +0000 DEBUG         [             registrationTask1] [sun.net.www.protocol.http.HttpURLConnection:61        ] -  sun.net.www.MessageHeader@31a304286 pairs: {null: HTTP/1.1 201}{X-Application-Context: Admin Server Application:dev:10710}{Location: http://devrhm8.dev.emergis:10710/ab2b05fc}{Content-Type: application/json;charset=UTF-8}{Transfer-Encoding: chunked}{Date: Tue, 25 Jun 2019 18:25:15 GMT}
2019-06-25 18:25:15.445 +0000 DEBUG         [             registrationTask1] [d.c.b.a.client.registration.ApplicationRegistrator:75 ] -  Application refreshed itself as ab2b05fc
2019-06-25 18:25:16.551 +0000 ERROR         [         http-nio-10701-exec-3] [org.springframework.boot.SpringApplication:771        ] -  Application startup failed
java.lang.IllegalArgumentException: Invalid argument syntax: --spring.config.location=
        at org.springframework.core.env.SimpleCommandLineArgsParser.parse(SimpleCommandLineArgsParser.java:75)
        at org.springframework.core.env.SimpleCommandLinePropertySource.<init>(SimpleCommandLinePropertySource.java:89)
        at org.springframework.boot.DefaultApplicationArguments$Source.<init>(DefaultApplicationArguments.java:76)
        at org.springframework.boot.DefaultApplicationArguments.<init>(DefaultApplicationArguments.java:42)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:294)
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:134)
        at org.springframework.cloud.config.server.environment.NativeEnvironmentRepository.findOne(NativeEnvironmentRepository.java:134)
        at org.springframework.cloud.config.server.environment.CompositeEnvironmentRepository.findOne(CompositeEnvironmentRepository.java:45)
        at org.springframework.cloud.config.server.config.ConfigServerHealthIndicator.doHealthCheck(ConfigServerHealthIndicator.java:51)
        at org.springframework.boot.actuate.health.AbstractHealthIndicator.health(AbstractHealthIndicator.java:43)
        at org.springframework.boot.actuate.health.CompositeHealthIndicator.health(CompositeHealthIndicator.java:68)
        at org.springframework.boot.actuate.endpoint.HealthEndpoint.invoke(HealthEndpoint.java:86)
        at org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.getCurrentHealth(HealthMvcEndpoint.java:178)
        at org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.getHealth(HealthMvcEndpoint.java:167)
        at org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(HealthMvcEndpoint.java:144)
        at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:854)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:765)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
        at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcChildContextConfiguration$CompositeHandlerAdapter.handle(EndpointWebMvcChildContextConfiguration.java:288)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:208)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)

标签: spring-bootspring-cloudspring-cloud-config

解决方案


推荐阅读