【发布时间】:2014-11-11 14:52:42
【问题描述】:
我有一个 Java 应用程序,我想记录每个 REST 服务的所有执行时间。
如何衡量每个请求的执行时间?过滤器将如何配置?
【问题讨论】:
标签: java jersey restful-url
我有一个 Java 应用程序,我想记录每个 REST 服务的所有执行时间。
如何衡量每个请求的执行时间?过滤器将如何配置?
【问题讨论】:
标签: java jersey restful-url
球衣event listeners 一定是你所追求的。
event listeners 有两种风格,如他们的 docs 关于监控和跟踪:
ApplicationEventListener用于监听应用程序事件,以及RequestEventListener用于监听请求处理的事件只有第一种,ApplicationEventListener可以直接 注册为应用程序范围的提供程序。请求事件监听器 专为每个请求而设计,并且只能返回 来自 ApplicationEventListener 本身。
【讨论】:
我为所有服务请求添加了一个过滤器,它工作正常:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain p_filterChain) throws IOException, ServletException {
long startTime = System.currentTimeMillis();
String url = "unknown";
if (request instanceof HttpServletRequest) {
url = ((HttpServletRequest)request).getRequestURL().toString();
String queryString = ((HttpServletRequest)request).getQueryString();
if(queryString != null)
url += "?" + queryString;
}
p_filterChain.doFilter(request, response);
long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
LogManager logm = new LogManager();
logm.newLog(url,elapsedTime);
System.out.println("Request: " + url + " " + elapsedTime + "ms");
}
【讨论】: