Tapestry hook:渲染开始和渲染结束

时间:2011-05-10 09:48:47

标签: java tapestry jamon

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

我该如何进行

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

我正在尝试使用@OnEvent注释,但我不会那么做。

2 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分:2)

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