2010-11-13 46 views

回答

1

這是因爲兩個原因一個壞主意:

  1. 即定時信息是多餘的。在調用Web服務之前,消費者自己無法啓動計時器,然後在得到響應時停止計時器。
  2. 如果您嘗試自動執行測試,您將不得不忽略該時間信息,因爲您無法預測該值。它使測試您的Web服務變得更加困難,因爲響應是非確定性的。

現在,您關心性能是一件好事,但不要將這些指標返回給用戶,我會在系統日誌中記錄那些幕後的內容,您可以隨時查看這些內容。有很多方法可以做到這一點,但這裏有兩種常見的模式。

  1. 使用Apache共享記錄,然後做long start = System.currentTimeMillis()在入口點代碼,另一個調用System.currentTimeMillis()在出口點在你的代碼,計算的差異,只是log.info()出來。
  2. 更清潔但更難設置的選項是使用像Spring Framework的PerformanceMonitorInterceptor一樣的方面。

下面是我從Spring應用程序上下文文件中複製的一個工作示例。

<bean id="springPerformanceMonitorAspectInterceptor" class="org.springframework.aop.interceptor.PerformanceMonitorInterceptor"> 
    <property name="loggerName" value="com.myProject.performanceMonitor" /> 
</bean> 
<aop:config> 
    <aop:pointcut id="springMonitoringPointcut" expression="execution(* com.myProject..*(..))" /> 
    <aop:advisor pointcut-ref="springMonitoringPointcut" advice-ref="springPerformanceMonitorAspectInterceptor" /> 
</aop:config>