有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaTapestryHook:渲染的开始和结束

我试图使用jamon收集使用tapestry的网站的统计数据(呈现网页的时间)

我怎样才能继续做呢

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

我正在尝试使用@OnEvent注释,但我没有做太多


共 (2) 个答案

  1. # 1 楼答案

    您可以创建一个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());
    }
    
  2. # 2 楼答案

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