IセットアップとHttpMessageConverter全く適しはthis質問からJAXB2は、応答を抽出できませんでした:クライアントとサーバーの両方でjaxb2marshaller
フォローを使用してMarshallingMessageConverterを持っていないし。
これはサーバー側にあります:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(marshallingMessageConverter());
}
public MarshallingHttpMessageConverter marshallingMessageConverter() {
return new MarshallingHttpMessageConverter(jaxb2Marshaller(), jaxb2Marshaller());
}
public Jaxb2Marshaller jaxb2Marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(new Class[]{
User.class
});
return marshaller;
}
}
クライアント側:両方のログで
@Configuration
public class RESTConfig {
@Bean
public MarshallingHttpMessageConverter marshallingMessageConverter() {
return new MarshallingHttpMessageConverter(jaxb2Marshaller(), jaxb2Marshaller());
}
@Bean
public Jaxb2Marshaller jaxb2Marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(new Class[] {
User.class
});
return marshaller;
}
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>();
//converters.addAll(restTemplate.getMessageConverters());
converters.add(marshallingMessageConverter());
restTemplate.setMessageConverters(converters);
return restTemplate;
}
}
チェックだ:
org.springframework.oxm.jaxb.Jaxb2Marshaller createJaxbContextFromClasses
INFO: Creating JAXBContext with classes to be bound [class com.cloudlb.model.User]
私は、ユーザーを取得しようとします。私はこれを持っていた
org.springframework.web.client.RestClientException:
Could not extract response: no suitable HttpMessageConverter found for response type [com.cloudlb.model.User] and content type [application/xml]
私は何かを見逃しましたか?
String.classとして取得してチェックしても問題ありません。 XMLファイル形式で返されました。 > XML < - - 私は< --http XMLを達成したい
>オブジェクト>
User user = restTemplate.getForObject(url, User.class);
編集:これは私のコントローラである
@Controller
@RequestMapping("/user")
public class UserServiceController {
@Autowired
private UserService userService;
public UserServiceController() {}
@RequestMapping(value="/{id}", method = RequestMethod.GET)
@ResponseBody
public User findUserById(@PathVariable("id") String id) {
return userService.findById(id);
}
}
は、事前にありがとうございます。
ユーザークラスが定義されています - @ XmlRootElement注釈はありますか? –
はい、あります。これは、{...} ' – xyzxyz442
は、我々はあなたのコントローラを見ることができます処理するこの ' @Entity @Table(名= "ユーザー") @XmlRootElement(名= "ユーザー") パブリッククラスユーザーがSerializableを実装のように見えるあなたの要求? –