Крючок для гобелена: начало и конец - PullRequest
1 голос
/ 10 мая 2011

Я пытаюсь использовать jamon для сбора статистики (время отрисовки веб-страницы) веб-сайта с использованием гобелена.

Как я могу продолжить выполнение

  • методакогда запрос получен сервером, то есть начало рендеринга?
  • метод, выполняемый, когда ответ полностью отправлен, т.е. конец рендеринга?

Япытаюсь использовать аннотацию @OnEvent, но я не буду слишком далеко с этим.

Ответы [ 2 ]

3 голосов
/ 10 мая 2011

Вы можете создать 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 голосов
/ 23 мая 2011

Гобелен имеет расширяемые конвейеры, которые организуют логику для любого конкретного типа запроса. Я не уверен, пытаетесь ли вы измерить общее время обработки запроса или просто время, затрачиваемое на рендеринг (а в Tapestry фактически выполняется рендеринг DOM, а затем потоковая передача DOM клиенту). Конвейер HttpServletRequestHandler является хорошим местом для установки фильтра, который может измерять все время отклика для всех запросов (но не обеспечивает хороший способ выбора только запросов на рендеринг страницы), конвейер PageRenderRequestHandler хорош для измерения времени визуализации и потоковой передачи. стр.

...