gpt4 book ai didi

tomcat - 如何诊断Tomcat中的空指针异常

转载 作者:行者123 更新时间:2023-11-28 23:51:49 24 4
gpt4 key购买 nike

我正在开发一个在 Tomcat 中运行的 Java Servlet。我目前正在 Windows XP 机器上使用 XAMPP 包(包括 Tomcat 7)对其进行测试(别担心,我不打算在生产中使用它)。我这样做是因为我需要保持连接打开以便我可以使用 Comet 服务器推送通信(服务器推送这是必须具备的要求)。

servlet 正在运行,我已经编写了一个测试客户端,它显示客户端和服务器正在完美地通信。客户端使用在 servlet 中生成 BEGIN 事件的 HTTP header 通过 Internet 从 Internet 访问服务器,然后它响应 READ 事件进行通信。

然后,我尝试一个“真正的”客户端,它对我们来说是一个我无法完全控制的专有设备。很难获得很多关于它在做什么的信息,更糟糕的是,其他程序员将来可能会对其进行更改。充其量,我所能做的就是对 future 的变化提出建议。

设备发出带有 header 的 HTTP 请求,服务器处理 BEGIN 事件,但是随后,当设备尝试继续对话时,连接断开,我在 catalina 日志文件中得到以下信息:

2011 年 10 月 12 日下午 5:59:00 org.apache.coyote.http11.Http11NioProcessor 进程严重:错误处理请求java.lang.NullPointerException异常 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436) 在 org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:317) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1544) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 在 java.lang.Thread.run(Thread.java:722)

我知道用这些有限的信息很难诊断,这正是我的问题。如何获得有关 Tomcat 正在发生的事情的更多信息?此外,我能做些什么来保护/通知/帮助该设备的 future 程序员免于犯同样的错误(无论发生什么)?显然,问题很严重,所以我是否有黑客故意犯错误而关闭我的服务器的危险?

任何及时的回应和任何建议都将赢得我永恒的感激。


只是为了更新 - 我不知道为什么,但是当我们从初始标题后的通信中删除所有回车符和换行符时,问题就消失了。

感谢您的帮助。 StackOverflow 规则!

最佳答案

放入调试日志。然后你就会知道它失败的地方。诸如了解请求有何不同以及导致连接断开的原因之类的事情很重要,可以通过记录服务器正在执行的所有操作来找到。 Log4j 很棒,因为它可以让您记录任何您想要记录的内容,然后在您不再需要它时立即将其关闭。

“严重”意味着您的服务器不能只是掩盖错误并继续执行程序,它并不表示安全问题有多严重,这可能不存在。

关于tomcat - 如何诊断Tomcat中的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7748813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com