CXF呼叫持续时间记录

Sam*_*Sam 2 java logging cxf

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

有没有办法做到这一点?

Ian*_*rts 5

你需要将开始时间存储Exchange在你的拦截器中(如果你是服务器,如果你是客户端则是out-interceptor)

message.getExchange().put("com.myapp.startTime", System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)

并在out(分别为)拦截器中检索它

long timeTaken = System.currentTimeMillis() - (Long)message.getExchange().get("com.myapp.startTime");
Run Code Online (Sandbox Code Playgroud)

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