• 解决tomcat at org.apache.tomcat.util.buf.CharChunk.append(CharChunk.java:355)


    报错内容:

    org.apache.coyote.http11.AbstractHttp11Processor.process Error processing request
     java.lang.NullPointerException
    	at org.apache.tomcat.util.buf.CharChunk.append(CharChunk.java:308)
    	at org.apache.catalina.mapper.Mapper.map(Mapper.java:683)
    	at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:900)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:523)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
    	at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)
    	at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Thread.java:748)
    

     今天我在服务器上的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。

  • 相关阅读:
    macOS 升级后重装命令行工具的问题
    Windows系统制作Ubuntu启动U盘(命令行)
    远程管理相关命令的学习(域名和端口号的概念)
    远程管理相关命令的学习(ssh工作方式的简介)
    远程管理相关命令的学习(网卡和IP地址)
    远程管理相关命令的学习(shutdown)
    其他命令的使用(echo find 硬软链接)
    文件内容相关命令(cat more grep)
    拷贝和移动文件(tree cp mv命令的使用)
    touch mkdir rm命令的使用
  • 原文地址:https://www.cnblogs.com/interdrp/p/15587054.html
Copyright © 2020-2023  润新知