java - 我如何逐步查看 jetty 的源代码以查看它如何处理典型的 servlet 请求?

标签 java intellij-idea jetty

我想在响应典型的 servlet 请求时单步执行 jetty 源代码。

我该怎么做?

我需要下载源代码吗?

我应该设置断点的入口点在哪里?

最佳答案

是的,你可以做到。

是的,您需要下载源代码(除非您喜欢在调试器:) 中读取字节码),如果您使用的是 Maven,那么您可以 let maven do the downloading for you

可以使用“标准”Jetty 设置来完成,但我发现为这些任务构建一个快速的嵌入式 Jetty 服务器要容易得多。即使您不熟悉嵌入 Jetty,它也不难学,并且会帮助您了解 Jetty 如何处理 servlet。参见 the embedding jetty documentation

断点的位置将取决于您使用的 Jetty 的确切版本,以及您想要进入 Jetty 内部的程度。

您可以在 HttpConnection 的构造函数中设置一个断点,这样您就可以查看 Jetty 如何从原始 TCP/IP 套接字读取数据、解析 HTTP header ,然后创建一个 每个 HTTP 请求的请求响应对象。

如果您只是想看看分派(dispatch)到 servlet 的工作原理(请求的 URL 与路径映射的匹配、新 servlet 的实例化等),请尝试在 ServletHandler.doHandle 中设置断点。 p>

如果你想要介于两者之间的东西,那么 Server.handle 是个好地方 - 这将发生在传入流被解析之后,但在 Jetty 做出关于请求应该如何处理的任何决定之前处理。

关于java - 我如何逐步查看 jetty 的源代码以查看它如何处理典型的 servlet 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493344/

相关文章:

Java:类型与泛型类的迭代器不匹配

java - JavaLangAccess.blockedOn(Thread t, Interruptible b) 是做什么的?

java - 如何在 SmartOS 上使用 HotSpot DTrace 探测器?

java - JScrollPane 中的 IntelliJ JTable

java - 如何将 nginx 配置为 jetty 的代理?

Java - GUI (swing) - 空指针异常

intellij-idea - Intellij IDEA 无法使用 Play 框架解析符号

intellij-idea - 如何在部署前让 IntelliJ 清理输出工件目录?

java - IOException:打开的文件太多

servlets - 自定义错误页面在 Jetty 中不起作用