Создание веб-файлов с использованием шаблона отдыха kerberos HttpServerErrorException: 500 Internal Server Error - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь создать файл в формате 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 Ответ

0 голосов
/ 15 октября 2018

Мне удалось записать файл, а не создать его.Этого достаточно для моих нужд и может помочь кому-то еще, поэтому я опубликую это здесь.

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;
  }
...