Мой сервер Spring Cloud Config работает нормально, однако постоянно жалуется на неверный аргумент "--spring.config.location =" - PullRequest
1 голос
/ 25 июня 2019

Я создал новый сервер Spring Cloud Config с SpringBoot 1.5.21.RELEASE и Spring Cloud Config "1.4.7.RELEASE". Сборка и запуск с Java 8. Он настроен с «собственным» профилем, поэтому он использует файловую систему в качестве внутреннего хранилища. Мой сервер конфигурации запускается правильно и может принимать все запросы клиентов, как и ожидалось. У меня есть несколько приложений SpringBoot, которые подключаются к нему и могут правильно выбрать их свойства конфигурации для различных профилей и меток. Так что, по-видимому, он работает очень хорошо с точки зрения клиента!

Однако, если присмотреться к файлам журналов сервера конфигурации, мы увидим множество ошибок, сообщающих о «синтаксисе недопустимого аргумента: --spring.config.location =» во время каждого обновления и для каждого запроса клиента.

Мы также видим, что состояние работоспособности сервера Config по той же причине «выключено».

Я обычно явно не определяю свойство "spring.config.location", так как значение по умолчанию мне всегда подходит. В этом случае я попытался явно переопределить это свойство в расположении, где находятся файлы конфигурации сервера конфигурации. Я попытался переопределить значение в bootstrap.properties, а также в командной строке и даже с переменной среды, но это ничего не исправило. Как и для всех других моих приложений SpringBoot, мое местоположение конфигурации находится в стандартной папке «file: ./ config» (а также в «classpath: /»).

У меня также есть некоторые зависимости и настройки для подключения моего сервера конфигурации к серверу администратора SpringBoot, но даже когда я отключаю это, я все равно получаю ту же ошибку / поведение. Мне было интересно, что, возможно, это может быть причиной проблемы. В остальном Config Server является совершенно нормальным и стандартным приложением SpringBoot, как и все остальные, которые я создал и развернул в своей инфраструктуре. До сих пор каждое приложение SprintBoot имело собственный набор файлов свойств в стандартном расположении (./config), но сейчас я пытаюсь работать с сервером конфигурации.

Вот содержимое файла bootstrap.properties сервера Config:

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)
...