2017-11-28 1 views
0

Spring 5에서 REST 서비스를 사용하는 데 문제가 있습니다. 시나리오 : 사용자가 화면에서 필드 2 개를 업데이트하고 버튼을 클릭합니다. 그러면 스프링 컨트롤러가 호출되어 두 개의 REST 호출이 연속적으로 호출되어 정보를 수집 한 다음 브라우저로 반환됩니다. 우리의 현재 프로덕션 버전은 Spring 4를 사용하며 훌륭하게 작동합니다. 그러나 5로 업그레이드 한 후 서버를 디버그 모드로 전환하고 두 호출을 수행하는 코드 부분을 통해 디버깅하지 않으면 서비스 호출이 실패합니다. 디버깅하면 예상대로 작동합니다. 디버그하지 않으면 코드가 REST 호출에 의해 검색된 정보를 사용하기 때문에 NullPointerException이 발생합니다. 이는 REST 서비스가 정보를 반환하기 전에 연결을 닫았 기 때문에 거기에없는 REST 호출에 의해 검색된 정보를 사용하기 때문입니다. 어쩌면 제가 놓친 새로운 의존성이나, 4에서 Spring 5로 업그레이드했을 때 간과 해 왔던 무언가가있을 수 있습니다.Spring 5 Rest Service Invocation 문제

편집 :

ResponseEntity<String> entity = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<String>(){}); 

restTemplate이 org.springframework.web.client.RestTemplate의 autowire가 인스턴스 다음은 REST 서비스 호출을 담당하는 코드입니다. 호출이 완료되었는지 여부에 관계없이 항상 ResponseEntity가 발생합니다. 그러나 통화가 일찍 끝나면 본문 데이터가 null이며 올바르지 않습니다. 호출에 의해 반환 된 바디 데이터는 항상 존재할 것이고, 스프링 4는 항상 그것을 올바르게 캡쳐합니다. 스프링 5는 코드를 통해 디버깅 할 때만 올바르게 캡쳐되지만 정상 실행 중에는 실패합니다. 캡쳐 된 데이터를 검사 할 때이를 볼 수 있습니다.

+3

통화 방법을 공유 할 수 있습니까? , 서비스 호출이 어떻게 실패합니까? 예외를 공유하십시오 –

+2

그래서 도움이 필요하면 항상 코드를 던지십시오. 이미 시도한 바가 있습니다. –

답변

0

발견 된 해결책 - 문제는 내가 가지고있는 JDK 버전에 있습니다. 요청 팩토리를 HttpComponentsClientHttpRequestFactory로 바꿨습니다. 더 이상 문제가 없습니다.