Für die Wicket-Webanwendung, an der ich derzeit arbeite, haben wir JAMon für die Leistungsüberwachung in Echtzeit eingebaut. Wie üblich fangen wir alle Aufrufe von Objekten wie Repositories und Services ab, um deren Leistung zu überwachen. Da wir Spring verwenden, können wir diese von Spring verwalteten Objekte mit Spring AOP leicht abfangen. Neben diesen Statistiken sind wir auch daran interessiert, wie lange eine bestimmte Seitenanfrage dauert. Da die
Wenn ich diese Seitenanfragen überwache, möchte ich wissen, welche Seite tatsächlich angefordert wurde. Ich habe mir zunächst die Klasse WicketFilter angesehen, da dies der Einstiegspunkt Ihrer Wicket-Anwendung ist. Ich konnte jedoch keinen Weg finden, um festzustellen, welche Seite dort tatsächlich angefordert wurde. Nach einigen Nachforschungen und der Bestätigung durch die Wicket-Benutzergruppe (übrigens eine sehr gute und aktive Benutzergruppe) stellte sich heraus, dass die Klasse WebRequestCycle die Klasse ist, die wir überwachen müssen. Wicket bietet Hooks, die Sie in Ihrem benutzerdefinierten WebRequestCycle außer Kraft setzen müssen, nämlich onBeginRequest und onEndRequest. Es gibt jedoch eine knifflige Sache: Im
public class JAMonMonitoredWebRequestCycle extends WebRequestCycle {
static final String UNIT = "ms.";
private long startTime;
public JAMonMonitoredWebRequestCycle(WebApplication Anwendung, WebRequest Anfrage
, Response Antwort) {
super(Anwendung, Anfrage, Antwort);
this.startTime = 0;
}
@Override
protected void onBeginRequest() {
super.onBeginRequest();
startTime = System.currentTimeMillis();
}
@Override
protected void onEndRequest() {
super.onEndRequest();
calculateDurationAndAddToMonitor();
}
private void calculateDurationAndAddToMonitor() {
if(startTime != 0) {
Klasse pageClass = null;
if(getWebResponse().isAjax() && getWebRequest().getPage() != null) {
pageClass = getWebRequest().getPage().getClass();
} sonst {
pageClass = getResponsePageClass();
}
if(pageClass != null) {
MonitorFactory.add(pageClass.toString(), UNIT,
System.currentTimeMillis() - startTime);
}
}
}
}
Verfasst von
Lars Vonk
Contact



