3

是否有任何好的工具或技术来分析 Wicket 应用程序?我正在寻找的是可以让我在处理请求时详细了解 Wicket 内部发生的情况。

它不必像 Spring 洞察力那样花哨。

我是 Wicket 的新手,到处都是匿名的内部类,很难看到事情何时发生。

4

4 回答 4

6

至少对于 Wicket 1.4 可以看看内部方法org.apache.wicket.RequestCycle.steps()。基本上,这是一个已被识别为对 Wicket 应用程序的请求的请求,将在此处遍历 Wicket 请求处理周期的相关步骤。在类的开头,RequestCycle每个主要步骤都由一个 int 常量表示。int 值越高,步入循环的时间越晚。RequestCycle.step()从中调用的方法RequestCycle.steps()有一个 switch 语句,用于将不同的步骤委托给负责的框架方法,这些方法进一步向下委托。

请求周期中的步骤或阶段是按顺序排列的:

  • NOT_STARTED - 初始值
  • PREPARE_REQUEST - 为进一步处理做准备,调用 onBeginRequest
  • RESOLVE_TARGET - 确定相关的请求目标
  • PROCESS_EVENTS - 处理事件,将当前步骤设置为响应并响应
  • RESPOND - 仅响应,用于重定向的情况
  • DETACH_REQUEST - 通过委托触发分离钩子
  • DONE - 在 DETACH_REQUEST 之后成为当前值

步骤中实际发生的事情取决于各种接口的实现,最显着的是IRequestCycleProcessorIRequestTarget.

于 2012-05-16T13:33:08.280 回答
6

org.apache.wicket.response.filter.ServerAndClientTimeFilter org.apache.wicket.response.filter.AjaxServerAndClientTimeFilter org.apache.wicket.devutils.inspector.RenderPerformanceListener org.apache.wicket.protocol.http.RequestLogger

所有这些都给出了一些衡量标准,但也请参阅我对 Cedric Gatay 回应的评论。使用 Yourkit (http://www.yourkit.com) 之类的工具将极大地帮助您完成这项任务。

于 2012-05-17T11:19:03.380 回答
1

您可以像使用任何其他 Java 应用程序一样使用 jvisualvm 进行分析。使用正确的类过滤器集,您将能够查看代码中的耗时并希望对其进行纠正。

于 2012-05-16T06:41:56.337 回答
1

我发现它wicket-devutils附带一个名为的面板DebugBar,可以访问大量调试信息。

它可以在这里看到:http ://wicket.apache.org/apidocs/1.4/org/apache/wicket/devutils/debugbar/DebugBar.html

于 2012-05-21T10:29:14.670 回答