2014-02-28 40 views
0

我目前正在爲Rest服務工作,我們正在開發Rest服務。我希望能夠通過衡量所有客戶來電的表現。人們可以很容易地做這樣的事情:澤西客戶端:是否可以攔截每個性能測量請求?

WebTarget target ... // just assume a WebTarget is given 
long before = System.currentTimeMillis(); 
Response response = target.request().get(); // execute the request 
long after = System.currentTimeMillis(); 
long timeTaken = after - before; 
// now log timeTaken or whatever one might wanna do 

是否有可能攔截每一個請求,讓我可以將此代碼應用到每一個請求?我不想一遍又一遍地重複這段代碼。我搜索了一段代碼,我可以重寫以執行此代碼,但我沒有找到合適的代碼。

回答

2

如果您使用的是Jersey 2.6或更高版本,則可以使用新添加的HK2 AOP feature。基本上你會做的是在接近你的應用程序初始化的地方,你會添加一個Interception Service的實現並提供你的AOP聯盟方法攔截器。然後,您可以在攔截器中編寫任何想要衡量性能的代碼。

+0

Thx。我會看看它。你如何使用Jersey Client註冊這些攔截器?那些攔截服務也是可以在客戶端實例上註冊的提供者嗎? – mavilein

+0

您可能想要在這裏尋找Jersey客戶端:https://jersey.java.net/documentation/latest/user-guide.html#d0e4662。我相信使用ServiceLocatorClientProvider類可能是你正在尋找的。 – jwells131313

相關問題