これは、ここで説明するyammerタイミングアノテーションを使用した私の苦労のフォローアップです。
私のSpringコンテキストファイルには単純に次のものがあります。
<metrics:annotation-driven />
私は次のクラスを持っています:
import com.yammer.metrics.annotation.ExceptionMetered;
import com.yammer.metrics.annotation.Metered;
import com.yammer.metrics.annotation.Timed;
...
@Component
public class GetSessionServlet extends HttpServlet {
private final static Logger log = LoggerFactory.getLogger(GetSessionServlet.class);
@Override
public void init(final ServletConfig config) throws ServletException {
super.init(config);
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(
this, config.getServletContext());
}
@Override
@Timed(name = "get-session", rateUnit = TimeUnit.MILLISECONDS)
@Metered
@ExceptionMetered(name = "get-session-failures", rateUnit = TimeUnit.MILLISECONDS)
public void doGet(final HttpServletRequest req,
final HttpServletResponse resp) throws ServletException, IOException {
final String sessionId = req.getParameter("sessionId");
final String fields = req.getParameter("fields");
final String format = req.getParameter("format");
if (StringUtils.isEmpty(sessionId)) {
resp.getWriter().write("sessionId parameter missing!\n");
return;
}
...
}
アプリをローカルで実行してmvn clean tomcat7:run
から、jconsoleに接続します。
[MBeans]タブに、GetSessionServlet
クラスのパッケージ名が3つのサブフォルダーdoGet
(@Metered番号用)、get-session、およびget-session-failuresを含むエントリが表示されます。
ただし、サーブレットを何度呼び出しても、上記のサブフォルダーのすべての値はゼロのままです。私は何が欠けていますか?また、公式ドキュメントよりも詳細に説明されているこれらの従量制メトリックに関するドキュメントは大歓迎です。