2014-02-28 39 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

相关问题