Spring boot 1.5 consul health check 406错误(HttpMediaTypeNotAcceptableException)

时间:2018-05-29 14:30:28

标签: java spring-boot spring-cloud-consul

我使用spring cloud并在Consul中注册我的微服务。微服务应该使用JSON和XML接受类型。因此增加了以下2个编组。但是,当实施这两个bean时,领事健康检查开始会导致异常:HttpMediaTypeNotAcceptableException: Could not find acceptable representation。如果删除了XML的marshaller,那么运行状况检查开始工作正常。你能解释为什么为MediaType.APPLICATION_XML添加编组会导致领事健康检查异常吗?

注意:我尝试通过curl将请求/heath发送到带有标头accept=application/json的应用程序,即使启用了MediaType.APPLICATION_XML的编组,答案也是正确的。不幸的是,领事用text / plain accept类型发送请求。

    @Bean
public MarshallingHttpMessageConverter marshallingHttpMessageConverter() {
    Jaxb2Marshaller jaxb2Marshaller = jaxb2Marshaller();

    MarshallingHttpMessageConverter marshallingHttpMessageConverter = new MarshallingHttpMessageConverter();
    marshallingHttpMessageConverter.setMarshaller(jaxb2Marshaller);
    marshallingHttpMessageConverter.setUnmarshaller(jaxb2Marshaller);
    List<MediaType> supportedMediaTypes = new ArrayList<>();
    supportedMediaTypes.add(MediaType.APPLICATION_XML);
    marshallingHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes);
    return marshallingHttpMessageConverter;
}

    @Bean
public MappingJackson2HttpMessageConverter marshallingHttpMessageConverterJson() {

    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    converter.setObjectMapper(new ObjectMapper());
    List<MediaType> supportedMediaTypes = new ArrayList<>();
    supportedMediaTypes.add(MediaType.APPLICATION_JSON);
    converter.setSupportedMediaTypes(supportedMediaTypes);
    return converter;
}

1 个答案:

答案 0 :(得分:0)

我将我的应用程序从spring boot 1.4.1迁移到1.5.9以及上面提到的所有bean都在1.4.1中实现。但是,在以下配置中也提到了这些bean:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.clear();

    converters.add(marshallingHttpMessageConverter());
    converters.add(marshallingHttpMessageConverterJson());
}

删除此重写方法后,一切正常。