@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("/upload")
public String upload(@FormDataParam("file") InputStream inputStream) {
    ...
    inputStream.close(); // necessary?
}

W przypadku punktu końcowego API, który akceptuje wprowadzanie pliku, czy musimy ręcznie zamknąć InputStream lub robi to dla nas?

Sprawdziłem Dokumenty Jersey nie można znaleźć żadnych informacji o tym .

Szukasz wiarygodnego źródła lub jakiś sposób na potwierdzenie go.

1
Avery235 4 czerwiec 2018, 05:44

3 odpowiedzi

Najlepsza odpowiedź

Twoim obowiązkiem jest zamknięcie wprowadzenia.

Jersey Isryjcznie nie może wiedzieć, kiedy zamknąć strumień.

0
Hlib 5 czerwiec 2018, 08:48

1) Po spożyciu wejścia możesz założyć, że jest bezpieczny, aby go zamknąć.

2) Możesz także zarejestrować inwancję z Jersey Closfonservice, zgodnie z jego dokumentacją zamknąć wprowadzenie do Ciebie. ClosBableservice.

Mam nadzieję że to pomogło.

0
Toby 5 czerwiec 2018, 08:56

Właśnie zastanawiałem się tym samym i wypróbowałem go w debuggerze. Jersey nie Zamknij strumień dla Ciebie.

Myślę, że najbardziej eleganckim sposobem jest wykorzystanie tryp-zasobów, które mogą wziąć dowolne wyrażenia od Java 9 i dzwoni do Ciebie close().

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("/upload")
public String upload(@FormDataParam("file") InputStream inputStream) {
...
try (inputStream) {
   //...
} catch (IOException e) {
   //...
}
0
Tommy 29 maj 2019, 15:11