我刚刚将我们的 Spring Boot 项目从 boot 升级到 v2.6.2,从 Spring Cloud 升级到 2021.0.0。
现在我的远程配置获取不起作用,并且应用程序无法获取正确的属性文件
[主要]信息 o.s.c.c.c.ConfigServicePropertySourceLocator - 从服务器获取配置:http://localhost:8080
[main]警告o.s.c.c.c.ConfigServicePropertySourceLocator - 无法找到PropertySource:无法提取响应:没有找到适合响应类型[class org.springframework.cloud.config.environment.Environment]和内容类型[text/html;charset=UTF]的HttpMessageConverter -8]
[main] INFO eu.hermes.esb.cloud.Application - 没有设置活动配置文件,回退到默认配置文件:default
[主要]信息 o.s.b.c.config.ConfigDataLoader - 从服务器获取配置:http://localhost:8080
[main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - 在 DEFAULT 模式下引导 Spring Data JPA 存储库。**
我们使用基于 git repo 的 Spring Cloud 配置,其中包含以下结构的配置 yml 文件。
我尝试按照一些答案的建议将这两个依赖项添加到客户端服务,但没有任何效果。
这是我的配置服务 yml:
spring.cloud.config.server:
git:
uri: https://bitbucket-prod.doa.otc.hlg.de/scm/inp-cloud/esb-spring-boot-config.git
username: foo
password: bar
force-pull: true
spring.security:
basic:
enabled: true
user:
name: inp
password: hermes
我的应用程序使用这些属性运行:
-Dspring.config.import=configserver:http://inp:hermes@localhost:8080
-Dspring.cloud.config.name=esb-config-service
-Dspring.cloud.config.username=foo
-Dspring.cloud.config.username=bar
-Dspring.application.name=app-one
-Dspring.profiles.active=dev,console,gelf
我们的服务在 OKD 中运行在 Kubernetes 上。但我在 Windows 计算机上本地复制了相同的情况,因此我认为这不是特定于环境的。
问题很可能是客户端配置中的凭据错误,即用户名和密码。
根据所提供的信息很难确定。特别是,因为问题中给出的凭据可能是匿名的。但请注意,在给定的配置片段中,您设置了用户名两次,而不是密码。此外,服务器配置的片段没有正确缩进。客户端的属性可能应该包含
-Dspring.config.import=configserver:http://localhost:8080
-Dspring.cloud.config.username=inp
-Dspring.cloud.config.password=hermes
Spring Boot 的 Spring Security 自动配置与 Spring Cloud Config Server 并不完美匹配。问题是,当配置客户端的默认 Accept 标头使用错误的凭据发送时,服务器会转发到登录页面。这就是为什么配置客户端收到媒体类型为 HTML 的响应正文,而客户端无法理解该内容。
请仔细检查您的配置中的凭据。防止将来出现问题的最直接方法是在配置服务器中禁用登录页面(如果不需要)。然后,您会在客户端中收到一条明确的日志消息,表明凭据错误。