Spring MVC: llamar a un servicio de descanso desde otro servicio de descanso

Actualmente tengo un problema realmente extraño al llamar a un servicio REST desde otro y realmente podría ayudarme a resolver lo que estoy haciendo mal.

Primero, un poco de contexto:

Tengo una aplicación web que llama a un servicio REST para crear una cuenta de usuario (en aras de esta explicación, el punto final es localhost: 8080 / register). Anteriormente en el viaje del usuario, llamé a un servicio diferente para crear las credenciales de inicio de sesión del usuariolocalhost:8090/signup pero necesito verificar algunas cosas en la llamada para / registrarme, así que dentro de la llamada estoy llamando a un punto final diferente en 8090 para obtener esta información (localhost:8090/availability) En pocas palabras, la aplicación web llama a localhost: 8080 / register que a su vez llamalocalhost:8090/availability.

Cuando llamo al punto final de disponibilidad directamente, ya sea desde un cliente REST o desde la propia aplicación web, todo funciona como se esperaba, pero por alguna extraña razón, cuando lo llamo desde dentro de la llamada al punto final del registro obtengo un HTTP415. ¿Alguien tiene alguna idea de lo que va mal?

El controlador de registro se ve así:

@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public UserModel createUser(@RequestBody UserModel userModel) throws InvalidSignupException {

    // a load of business logic that validates the user model

    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<Boolean> response = restTemplate.postForEntity("http://localhost:8090/availability",
            userModel.getUsername(), Boolean.class);
    System.out.println(response.getBody());

    // a load more business logic

    return userModel;
}

Y el controlador de disponibilidad se ve así:

@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public Boolean isUsernameAvailable(@RequestBody String username) {

    // a load of business logic that returns a boolean
    return Boolean.TRUE;
}

Divulgación completa: en la práctica, lo que he mostrado como contenido de createUser () en realidad son varias llamadas a la pila de llamadas, utilizando la misma clase que utilizo para llamar a los servicios desde la aplicación web (que funciona perfectamente en ese contexto) , y en realidad no solo estoy volviendo verdadero en isUsernameAvailable (porque eso sería una tontería) sino que esta es la versión más simple del código que replica el problema.

Mi suposición actual es que estoy haciendo algo de lo que me voy a dar una patada cuando lo vea, pero he estado mirando este código demasiado tiempo para poder verlo más.

Editar El comentario de Vikdor a continuación resolvió este problema para mí. Cambié el método createUser a:

@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
public UserModel createUser(@RequestBody UserModel userModel) throws InvalidSignupException {

    // a load of business logic that validates the user model

    RestTemplate restTemplate = new RestTemplate();
    restTemplate.setMessageConverters(Arrays.asList(new MappingJackson2HttpMessageConverter()));
    ResponseEntity<Boolean> response = restTemplate.postForEntity("http://localhost:8090/availability",
            userModel.getUsername(), Boolean.class);
    System.out.println(response.getBody());

    // a load more business logic

    return userModel;
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta