2

我正在使用自定义 cxf 拦截器来记录服务调用的请求/响应,我想记录调用时间以及响应。

有没有办法做到这一点?

4

1 回答 1

5

您需要将开始时间存储到Exchange您的 in-interceptor 中(如果您是服务器,如果您是客户端,则为 out-interceptor)

message.getExchange().put("com.myapp.startTime", System.currentTimeMillis());

并在输出(分别输入)拦截器中检索它

long timeTaken = System.currentTimeMillis() - (Long)message.getExchange().get("com.myapp.startTime");

根据您现有拦截器在链中的确切位置,您可能希望在一对专用的拦截器中执行此操作,其中一个尽可能早地在链中,而一个尽可能晚地输出(对于服务器,反之亦然如果您是客户)。

于 2012-11-19T17:30:27.630 回答