Создание веб-файлов с использованием шаблона отдыха kerberos HttpServerErrorException: 500 Internal Server Error
Я пытаюсь создать файл в формате hdf с помощью webhdfs. Kerberos используется для безопасности на кластере, поэтому я использую KerberosRestTemplate
,
В моем контроллере у меня есть 2 метода
@RequestMapping("/showFileContent")
public ResponseEntity<String> showContent() throws URISyntaxException {
return new ResponseEntity<>(taxonService.getTaxonJSON(), HttpStatus.OK);
}
@RequestMapping("/createFile")
public ResponseEntity<URI> createFile() throws URISyntaxException {
return new ResponseEntity<>(taxonService.createFile(), HttpStatus.OK);
}
И в моем классе обслуживания у меня есть
public String getTaxonJSON() throws URISyntaxException {
URI uri = new URI(path + "?op=OPEN");
String json = restTemplate.getForObject(uri, String.class);
return json;
}
public URI createFile() throws URISyntaxException {
URI uri = new URI(path + "?op=CREATE");
return restTemplate.postForLocation(uri, String.class);
}
Я могу видеть содержимое файла просто отлично, используя /showFileContent
, но каждый раз, когда я пытаюсь /createFile
, Я получил Error running rest call; nested exception is org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error
, Я удаляю файл перед вызовом create.
В чем причина ошибки?
1 ответ
Решение
Мне удалось записать файл, а не создать его. Этого достаточно для моих нужд и может помочь кому-то еще, поэтому я опубликую это здесь.
public boolean writeFile(File file) throws URISyntaxException {
URI uri = new URI(path + "?op=CREATE" + "&overwrite=true&data=true");
ResponseEntity e =kerberosRestTemplate.exchange(uri, HttpMethod.PUT, new HttpEntity<Resource>(new FileSystemResource(file)), Map.class);
return e.getStatusCodeValue() == 201;
}