null buffer || null address

         今天有同事搭建项目的冒烟环境,搭建了快一天一直没搭建成功。后来,晚上我帮忙查看的时候,发现系统在启动的时候大部分的service都启动失败,这些service都在通过log4j打log的时候就开始抛出异常,异常信息如下:

   Caused by: java.lang.NullPointerException: null buffer || null address

        at java.net.PlainDatagramSocketImpl.send(Native Method)

        at java.net.DatagramSocket.send(DatagramSocket.java:612)

        at org.apache.log4j.helpers.SyslogWriter.write(SyslogWriter.java:69)

        at org.apache.log4j.helpers.QuietWriter.write(QuietWriter.java:39)

        at org.apache.log4j.helpers.SyslogQuietWriter.write(SyslogQuietWriter.java:45)


        第一反应是不可思议,竟然通过log4j写日志出现异常了。后来发现当我们通过一个不可解析的SocketAddress来发送DatagramPacket信息时会抛出上诉的异常,这个异常信息太烂了,这是jdk的一个bug。查出这个问题之后就好办了,在对应的log4j.xml配置文件里面有配置了一个Appender来将日志写到一台远程机器上;而对应的机器名并没有加入DNS解析中,导致对应的主机找不到,抛出上述异常;后添加DNS解析后,应用恢复正常。
       
        怕日后忘记,在此做个小记~~

          上面说的JDK的bug链接见http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5021519

 

 

 

 

你可能感兴趣的:(JAVA)