【问题标题】:How can I step through jetty's source to see how it processes a typical servlet request?我如何通过 jetty 的源代码来查看它如何处理典型的 servlet 请求?
【发布时间】:2012-02-29 03:49:25
【问题描述】:

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

我该怎么做?

我需要下载源代码吗?

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

【问题讨论】:

    标签: java intellij-idea jetty


    【解决方案1】:

    是的,你可以做到。

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

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

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

    您可以在HttpConnection 的构造函数中设置断点,这将允许您查看 Jetty 如何从原始 TCP/IP 套接字读取、解析 HTTP 标头,然后创建一个请求以及每个 HTTP 请求的 response 对象。

    如果您只是想看看如何调度到 servlet(请求的 URL 与路径映射的匹配、新 servlet 的实例化等),请尝试在 ServletHandler.doHandle 中设置断点

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

    【讨论】:

      【解决方案2】:

      是的,您需要下载源代码(除非您想单步执行 javap 输出)。上次我检查时,我认为有一个 Server.handle() 方法是“主要”入口点。

      【讨论】:

        猜你喜欢
        • 2013-07-15
        • 1970-01-01
        • 1970-01-01
        • 2021-03-27
        • 1970-01-01
        • 2023-03-18
        • 2015-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多