ДЖЕРСИ: Трассировка ошибок: java.lang.IllegalStateException: поток ввода объекта уже закрытJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 ДЖЕРСИ: Трассировка ошибок: java.lang.IllegalStateException: поток ввода объекта уже закрыт

Сообщение Anonymous »

Я работаю с Jersey 2.x.

Ниже приведен мой контроллер

Код: Выделить всё

@GET
@Path("{id}")
@Produces("application/json")
public Response getUser(@PathParam("id") int userId, @Context ContainerRequestContext containerRequestContext) {

ContainerRequestContext requestContext = logRequest(containerRequestContext);

//To further operations using requestContext

}
Ниже приведен мой метод внутри того же класса контроллера для записи запроса.

Код: Выделить всё

private ContainerRequestContext logRequest(ContainerRequestContext requestContext) {

JSONObject requestData = new JSONObject();
try {

Map bm = null;
ContainerRequest cr = (ContainerRequest) requestContext;

cr.bufferEntity();

bm = cr.readEntity(Map.class);

if (!String.valueOf(bm).equalsIgnoreCase("null")) {
requestData.put("parameters", bm.toString());
}

requestData.put("uri", requestContext.getUriInfo().getRequestUri());
requestData.put("ClientIp", requestContext.getProperty("requesterIp"));
requestContext.setProperty("requestData", requestData);

} catch (IOException | NumberFormatException | ProcessingException ex) {
//Logging

} catch (Exception ex) {
//Logging
}
return requestContext;
}
Как вы можете видеть, я использую bufferEntity() для чтения ContainerRequestContext несколько раз.

Тем не менее, когда я развертываю свой API на своем сервере.

Я сталкиваюсь с этой ошибкой:

Код: Выделить всё

Error Trace : java.lang.IllegalStateException: Entity input stream has already been closed.
Что я здесь делаю не так.
Я буду благодарен, если кто-нибудь объяснит мне такое поведение.

Подробнее здесь: https://stackoverflow.com/questions/455 ... stream-has
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»