当前位置: 首页 > 知识库问答 >
问题:

Spring boot云配置客户端未拾取云配置,错误消息:未找到合适的HttpMessageConverter?

阚原
2023-03-14

我正在尝试将我的Spring启动应用程序“配置测试”连接到Springframework的云配置服务器。它不会选择应用程序的配置,而是回答一个错误并中止应用程序(由于fail fast选项):

Could not extract response: no suitable HttpMessageConverter found for response type [class org.springframework.cloud.config.environment.Environment] and content type [text/html;charset=UTF-8]

连接到配置服务器时,会显示:

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

2021-02-21 17:41:32.950  INFO 1891 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8081
2021-02-21 17:41:33.230 ERROR 1891 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Could not locate PropertySource and the fail fast property is set, failing
    at org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.locate(ConfigServicePropertySourceLocator.java:148) ~[spring-cloud-config-client-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.cloud.bootstrap.config.PropertySourceLocator.locateCollection(PropertySourceLocator.java:52) ~[spring-cloud-context-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.locateCollection(ConfigServicePropertySourceLocator.java:163) ~[spring-cloud-config-client-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:97) ~[spring-cloud-context-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:626) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:370) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]
    at com.lhsystems.cdb.logging_test.DynamicConfigLogLevelApplication.main(DynamicConfigLogLevelApplication.java:24) [classes/:na]
Caused by: org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class org.springframework.cloud.config.environment.Environment] and content type [text/html;charset=UTF-8]
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:123) ~[spring-web-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:998) ~[spring-web-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:981) ~[spring-web-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:741) ~[spring-web-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:674) ~[spring-web-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:583) ~[spring-web-5.2.6.RELEASE.jar:5.2.6.RELEASE]
    at org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.getRemoteEnvironment(ConfigServicePropertySourceLocator.java:264) ~[spring-cloud-config-client-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.locate(ConfigServicePropertySourceLocator.java:107) ~[spring-cloud-config-client-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    ... 9 common frames omitted

2021-02-21 17:41:33.234  WARN 1891 --- [           main] o.s.boot.SpringApplication               : Unable to close ApplicationContext

我已经在“引导”中定义了云配置服务器的URI。yml的属性文件。引导程序。yml是:

spring:
  cloud:
    config:
      name: config-test
      uri: http://localhost:8081
      fail-fast: true

logging:
  level:
    com.harry.potter.logging_test: trace

我有一个“application.properties”文件,用于在运行时启用配置客户端的 /refresh功能:

management.endpoints.web.exposure.include=*

我的项目是pom。xml是:

<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>com.harry.potter</groupId>
    <artifactId>cloud-aware-microservices</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>cloud-aware-microservices-config-test</artifactId>

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Hoxton.SR4</spring-cloud.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

我的项目的父pom.xml是:

<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.3.0.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<groupId>com.harry.potter</groupId>
<artifactId>cloud-aware-microservices</artifactId>
<version>0.0.1-SNAPSHOT</version>

<packaging>pom</packaging>

<name>cloud-aware-microservices</name>
<description>Cloud Aware Microservice Configuration System</description>

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<modules>
    <module>cloud-aware-microservices-config</module>
    <module>cloud-aware-microservices-config-test</module>
</modules>

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

当通过请求(使用curl)激活时,配置服务器会按预期工作,并将组织为GIT存储库的本地文件的配置内容发回。

我做错了什么?

共有2个答案

窦宏旷
2023-03-14

在遵循本教程快速介绍Spring Cloud配置时,我遇到了类似的问题,尽管服务器的凭据是正确的。我后来意识到Spring安全默认设置导致了错误,这是因为配置服务器完全打开了安全性。我通过在默认的Spring安全中使用Spring配置禁用跨站请求伪造来解决这个问题:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception{
        httpSecurity.csrf().disable();
    }
}
逄边浩
2023-03-14

这里的问题是配置客户端请求配置服务器时没有凭据(或凭据错误)。

在本例中,Spring的ConfigServicePropertySourceLocator抛出上述异常,并显示一条误导性消息:

Could not extract response: no suitable HttpMessageConverter found for response type [class org.springframework.cloud.config.environment.Environment] and content type [text/html;charset=UTF-8]

关于凭据和云配置服务器,Baeldung教程“Spring Cloud快速入门”说:

我们还需要为应用程序中的基本身份验证设置用户名和密码。属性以避免每次应用程序重新启动时自动生成密码。

每次配置客户端向服务器查询配置时,都需要这些凭据。我已将凭据添加到“引导”。yml的属性文件

spring:
  cloud:
    config:
      name: config-test
      uri: http://localhost:8081
      username: harry
      password: potter
      fail-fast: true

logging:
  level:
    com.harry.potter.logging_test: trace

这就成功了。

 类似资料:
  • 我是Spring Cloud的新手,我正在尝试使用存储在github上的属性文件连接服务器和客户端。 我的服务器应用程序。yml文件的配置如下: github回购协议链接在这里,主要属性和替代属性 我的客户端应用程序具有以下设置 Rest控制器是: 所有${变量}van都可以在位于git存储库中的属性文件中找到。 服务器运行正常,但是客户端给了我以下错误 创建名为“rateController”的

  • 我正在尝试使用spring cloud配置客户端配置并运行spring Boot应用程序。我已经成功运行了配置服务器,但客户端在加载应用程序上下文时出现错误。 在搜索时,我得到了指向版本/依赖冲突等的指针,并尝试使用不同的版本。任何帮助都将不胜感激。 错误代码段: 以下是样品pom。

  • 在这里,我使用rancher和docker compose来初始化spring cloud config客户端和服务器,但当spring cloud config server未就绪时,客户端启动失败,需要在服务器就绪时重新启动。我想问,当服务器准备就绪时,是否有任何机制可以让SpringCloudConfig客户端重新加载或重新启动?

  • 我正在尝试创建一个简单的Spring Cloud Config服务器/客户端设置,并松散地遵循留档: https://cloud.spring.io/spring-cloud-config/reference/html/ 到目前为止,我已经实现了一个似乎工作正常的服务器,即在调用相应endpoint时返回正确的属性值: 然而,我没有任何运气让客户端连接到服务器。我做了以下工作: 添加了依赖项: 但

  • 问题内容: 我刚刚为Firebase实施了新的Cloud Functions,但是日志中有些东西让我感到困扰: 未配置结算帐户。无法访问外部网络,并且配额受到严重限制。配置计费帐户以消除这些限制 我实际上设法从外部网络访问该功能,所以我想知道我是否真的必须提供计费帐户?Firebase文档中对此没有任何内容。 我将Spark订阅计划用于个人测试,并且如果我不打算支付任何费用,则不想添加账单信息。

  • 我刚刚为Firebase实现了新的云功能,但日志中有一些让我烦恼的地方: 未配置账单帐户。外部网络无法访问,配额受到严格限制。配置帐单帐户以删除这些限制 我实际上设法从外部网络访问了该功能,所以我想知道我真的必须给我的账单帐户吗?firebase文件里没有这方面的内容。 我使用Spark订阅计划用于个人测试目的,如果我还不打算支付任何费用,我不想添加账单信息。