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

Bla*_*man 3 java jetty intellij-idea

我想单步执行 jetty 源代码,因为它响应典型的 servlet 请求。

我怎样才能做到这一点?

我需要下载源代码吗?

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

Tim*_*Tim 5

是的,你可以做到。

是的,你需要下载源代码(除非你喜欢在调试器中读取字节码:)),如果你使用Maven,那么你可以让maven为你下载

可以使用“标准”Jetty 设置来完成此操作,但我发现为这些任务构建快速嵌入式 Jetty 服务器要容易得多。即使您不熟悉嵌入 jetty,学习它也不难,并且将帮助您了解 Jetty 如何处理 servlet。请参阅嵌入码头文档

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

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

如果您只想查看 servlet 的分派是如何工作的(请求的 URL 与路径映射的匹配、新 servlet 的实例化等),则尝试在 ServletHandler.doHandle

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