2012-05-14 5 views
1

나는 유선이 뭔가를 만들어내는 프로젝트와 함께한다는 것을 알고 있습니다. RestTemplate을 사용하고 있습니다. 그리고 나는 서버와 연결하고 데이터를 검색하려고 노력하고있다. 둘 이상의 컨트롤러 클래스에서 내 프로그램을 위반하기로 결정할 때까지 모든 것이 잘 진행되었습니다. 내가 한 일 좀 봐. 내가 그들의 각 하나에 삽입하는 새로운 클래스 각각에 :RestTemplate "적합하지 않은 HttpMessageConverter"

RestTemplate restTemplate= new RestTemplate(); 

데이터를 검색하기 위해 내가 (데이터 바인딩)만을 JAXB 주석을 사용하고 그리고 난 내가 원하는대로 검색 할 수 있습니다. 나는이 예외를 취하고

ResponseEntity<AClass> result = restTemplate.exchange("url", 
         HttpMethod.GET, entity, AClass.class); 

: 나는 새 클래스의 코드 줄을 실행하기 위해 노력하고있어하지만 RestClientException는 "응답을 추출 할 수 없습니다 : 더 HttpMessageConverter 적절한 응답 유형의 발견 [AClass 없습니다] 및 콘텐츠 type [application/xml] "

이전 클래스로 되돌리려면 문제없이 실행할 수 있습니다. 정말로 나는 이유를 모른다. 아마 내가 새 클래스에서 새 RestTemplate을 사용하기 때문에. 다른 RestTemplates를 선언하고 이런 식으로 선언하려고합니다. @Autowired하지만 문제가 남아 있습니다. Dispatcher 서블릿에서 뭔가 새로운 것을 선언해야합니까? 게다가 많은 클래스에서 restTemplate (RestTemplate restTemplate = new RestTemplate())라는 개체를 호출 할 수 있습니까? 특정 클래스에서 선언하고 거기에서 호출해야합니까? 나는 무엇을해야합니까? 당신의 제안을 기대합니다.

답변

0

이전에 restTemplate 인스턴스를 어떻게 설정 했습니까? 인스턴스에 MarshallingHttpMessageConverter을 등록해야합니다. 그렇지 않으면 XML을 언 마샬링하는 방법을 알 수 없습니다. 다음과 같은 내용 :

Jaxb2Marshaller jaxbMarshaller = new Jaxb2Marshaller(); 
// Make sure context paths includes AClass's package 
jaxbMarshaller.setContextPaths("com.example.generated"); 
MarshallingHttpMessageConverter converter = new 
    MarshallingHttpMessageConverter(jaxbMarshaller, jaxbMarshaller); 
restTemplate.setMessageConverters(Arrays.<HttpMessageConverter<?>> asList(converter)); 
관련 문제