2017-06-09 2 views
-1
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); 
    } 

} 

Dieser Code löst Nullzeiger auf out.flush(). httpServletResponse ist eine Instanzvariable. Ich habe überprüft, dass die Antwort nicht null ist. Diese Funktion wird von Apache in der CloseableHttpAsyncClient.execute.completed() -Acync-HTTP-Clientbibliothek aufgerufen.Was verursacht diese NPE in org.apache.catalina.connector.CoyoteWriter.flush()?

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 
+2

"Dieser Code löst den Nullzeiger bei 'out.flush()'. " => Kein Weg! Es würde zuerst eine NPE an der Zeile out.print (response) werfen. – Seelenvirtuose

+1

Haben Sie den Stacktrace? Bitte editiere deine Frage und füge sie ein. –

+0

ist es unmöglich für '.flush()' eine NPE zu werfen, wenn die Zeile rechts oben erfolgreich war. Ihr Schritt-Debugger würde diese Tatsache ebenso anzeigen, wie was tatsächlich die NPE verursacht. –

Antwort

Verwandte Themen