Джерси: трассировка ошибки: java.lang.illegalstateexception: входной поток объекта уже был закрытJAVA

Программисты JAVA общаются здесь
Anonymous
Джерси: трассировка ошибки: java.lang.illegalstateexception: входной поток объекта уже был закрыт

Сообщение Anonymous »

Я работаю с Jersey 2.x. < /p>

Следующий мой контроллер < /p>

@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

}
< /code>

Ниже приведен мой метод внутри того же класса контроллера, чтобы записать запрос < /p>

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;
}
< /code>

Как вы можете видеть, я использую Bufferentity () < /code> для чтения ContainerRequestContext несколько раз. < /p>

Все еще, когда я развертываю свой API на моем сервере.Error Trace : java.lang.IllegalStateException: Entity input stream has already been closed.
< /code>

Что я делаю здесь не так.
Я буду благодарен, если кто -то может объяснить мне такое поведение.

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

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