我們想要測量API端點的請求和響應大小。因爲它確定RequestEventListener
持續時間recommended我們採取了這種方法。確定Jersey中的請求/響應大小度量值RequestEventListener
使用檢查器,我們可以看到requestEvent包含一個屬性containerResponse.messageContext.commitingOutputStream.adoptedOutput.delegate.outputStream.count
,其中包含實際響應大小(以字節爲單位)。但是,我們無法使用公共方法和字段訪問此字段。可訪問的方法containerResponse.getLength()
總是返回-1
。 containerRequest.getLength()
也一樣。
我們如何訪問實際的請求和響應大小,最好是沒有反射?
private class EndPointPerformanceFilter implements RequestEventListener {
private long start;
@Override
public void onEvent(final RequestEvent requestEvent) {
switch (requestEvent.getType()) {
case START:
start = timeProvider.currentTimeMillis();
break;
case FINISHED:
final long duration = timeProvider.currentTimeMillis() - start;
final ContainerRequest containerRequest = requestEvent.getContainerRequest();
final ContainerResponse containerResponse = requestEvent.getContainerResponse();
System.out.println("Req: [" + containerRequest.getLength() + "] Rep: [" + containerResponse.getLength() +"]");
break;
}
}
}