Tomcat異常退出


tomcat正常運行期間,會出現這樣的報錯,於是在網上搜了一下,發現有前輩,已找到解決辦法,碎不甚明白其中緣由,但先記下,日后深研究:

我的機器的報錯內容:

SEVERE: Error processing request
java.lang.NullPointerException
        at org.apache.tomcat.util.buf.CharChunk.append(CharChunk.java:355)
        at org.apache.tomcat.util.http.mapper.Mapper.map(Mapper.java:673)
        at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:646)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:402)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

前輩的解答內容:
今天我在服務器上的tomcat也是出現了這么個問題,發現是tomcat底層報出來的一個空指針異常,說是CharChunk這個類的append方法,一時間摸不着頭腦,最后看看CharChunk源碼發現

這里的s參數為null才報的錯,

之所以s為null,那是因為從這里調用的defaulthostname為null,也就是說host.isNull()這個方法
返回值是true,當是HTTP/1.0的 request沒有"Host" header才會導致host is null,而我們現在的tomcat基本上都是HTTP/1.1,所以這個請求是不尋常的,很詭異,不知道什么時候調用的,但是可以解決,需要在server.xml中的
<Engine name="Catalina" defaultHost="localhost">
標簽下配置一個

<Host name="localhost" >
</Host>

,這樣他的defaultHost的值才不會被忽略,defaulthostname才會有值,這樣就解決了那個tomcat運行時不時的報一個NullPointerException。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM