1

我正在尝试使用 jamon 来收集使用挂毯的网站的统计信息(呈现网页的时间)。

我怎样才能继续拥有

  • 服务器接收到请求时执行的方法,即渲染开始?
  • 当响应全部发送时执行的方法,即渲染结束?

我正在尝试使用@OnEvent注释,但我并没有走得太远。

4

2 回答 2

3

您可以创建一个RequestFilter来包装对您自己的代码的调用之间的实际渲染:

public class RenderStatisticsFilter implements RequestFilter {

   @Override
   public boolean service(Request request, Response response,
            RequestHandler handler) throws IOException {
       this.beforeRender();         
       final boolean result = handler.service(request, response);
       this.afterRender();
       return result;
   }

   private void beforeRender() {
       ...
   }

   private void afterRender() {
       ...
   }    

}

您需要通过您的应用程序模块将您的过滤器贡献给渲染管道:

public void contributeRequestHandler(
        final OrderedConfiguration<RequestFilter> configuration) {
    configuration.add("RenderStatisticsFilter", new RenderStatisticsFilter());
}
于 2011-05-10T10:50:57.243 回答
2

Tapestry 具有可扩展的管道,可以为任何特定类型的请求组织逻辑。我不确定您是在尝试测量整个请求处理时间,还是仅仅测量渲染所花费的时间(并且,在 Tapestry 中,实际上是在渲染 DOM,然后将 DOM 流式传输到客户端)。HttpServletRequestHandler 管道是放置过滤器的好地方,该过滤器可以测量所有请求的所有响应时间(但不提供仅选择页面呈现请求的好方法),PageRenderRequestHandler 管道适用于测量呈现和流式传输的时间页。

于 2011-05-23T00:43:49.370 回答