private void respond(String response) {
httpServletResponse.setContentType("application/json");
httpServletResponse.setCharacterEncoding("UTF-8");
try {
PrintWriter out = httpServletResponse.getWriter();
out.print(response);
out.flush();
} catch (IOException ex) {
log.error("Error while writing response",ex);
}
}
This code throws null pointer at out.flush(). httpServletResponse is instance variable. I have verified that response is not null. This function is being called from inside Apache's aync http client lib's CloseableHttpAsyncClient.execute.completed().
LOG:
Caused by: java.lang.NullPointerException: null
at org.apache.coyote.http11.InternalNioOutputBuffer.flushBuffer(InternalNioOutputBuffer.java:234) ~[tomcat-coyote.jar:8.0.14]
at org.apache.coyote.http11.InternalNioOutputBuffer.addToBB(InternalNioOutputBuffer.java:189) ~[tomcat-coyote.jar:8.0.14]
at org.apache.coyote.http11.InternalNioOutputBuffer.commit(InternalNioOutputBuffer.java:177) ~[tomcat-coyote.jar:8.0.14]
at org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:739) ~[tomcat-coyote.jar:8.0.14]
at org.apache.coyote.Response.action(Response.java:179) ~[tomcat-coyote.jar:8.0.14]
at org.apache.coyote.Response.sendHeaders(Response.java:341) ~[tomcat-coyote.jar:8.0.14]
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:331) ~[catalina.jar:8.0.14]
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:313) ~[catalina.jar:8.0.14]
at org.apache.catalina.connector.CoyoteWriter.flush(CoyoteWriter.java:98) ~[catalina.jar:8.0.14]
at com.thruport.aje.rotator.reward.async.RewardRequest.respond(RewardRequest.java:185) ~[output/:na]
at com.thruport.aje.rotator.reward.async.RewardRequest.lambda$new$2(RewardRequest.java:131) ~[output/:na]
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602) ~[na:1.8.0_121]
... 8 common frames omitted