新风花雪月 发表于 2018-11-29 10:49:04

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源码发现
http://doc.ithao123.cn/uploads/u/ad/50/ad504285bdb21606f8fba45d2168b2e8.jpg
  这里的s参数为null才报的错,
http://doc.ithao123.cn/uploads/u/62/15/62150d8c396a56b3185580ed78d390eb.jpg
  之所以s为null,那是因为从这里调用的defaulthostname为null,也就是说host.isNull()这个方法
  返回值是true,当是HTTP/1.0的 request没有"Host" header才会导致host is null,而我们现在的tomcat基本上都是HTTP/1.1,所以这个请求是不寻常的,很诡异,不知道什么时候调用的,但是可以解决,需要在server.xml中的标签下配置一个
  
  
  ,这样他的defaultHost的值才不会被忽略,defaulthostname才会有值,这样就解决了那个tomcat运行时不时的报一个NullPointerException。
  具体星狂,具体对待!

页: [1]
查看完整版本: tomcat误报