我正在尝试使用 jamon 来收集使用挂毯的网站的统计信息(呈现网页的时间)。
我怎样才能继续拥有
- 服务器接收到请求时执行的方法,即渲染开始?
- 当响应全部发送时执行的方法,即渲染结束?
我正在尝试使用@OnEvent
注释,但我并没有走得太远。
您可以创建一个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());
}
Tapestry 具有可扩展的管道,可以为任何特定类型的请求组织逻辑。我不确定您是在尝试测量整个请求处理时间,还是仅仅测量渲染所花费的时间(并且,在 Tapestry 中,实际上是在渲染 DOM,然后将 DOM 流式传输到客户端)。HttpServletRequestHandler 管道是放置过滤器的好地方,该过滤器可以测量所有请求的所有响应时间(但不提供仅选择页面呈现请求的好方法),PageRenderRequestHandler 管道适用于测量呈现和流式传输的时间页。