Spring:响应时间

Spring: Response time

我有一个 SOAP 网络服务 (spring ws),需要保存我收到的每个请求的响应时间。我可以创建一个 servlet 过滤器来测量 HTTP 请求和 HTTP 响应之间的时间差。但是,我需要记录响应时间以及我从 soap 请求信封中读取的一些值,并且由于那时请求是原始的并且需要解组,因此对每个请求进行解组是一项昂贵且冗余的操作。

那么有没有办法用SpringWS来计算呢?就像在 payloadInterceptor 中一样?

我想你可以使用两个工具。

  1. AspectJ 及其注解@Before 和@AfterReturning。切入点可以是接收请求的方法 (@WebMethod)。

    @Before("call([package, class and method that receives the request]")
    public void before(JoinPoint joinPoint) throws Throwable {
        ...
    }
    
    @AfterReturning(pointcut = "call([package, class and method that receives the request])", returning = "result")
    public void after(JoinPoint joinPoint, Object result) throws Throwable {
        ...
    }
    

JoinPoint对象有方法参数的信息

  1. 覆盖实现 SOAPHandler class 的自定义 class 的方法 handleMessage。每次收到 SOAP 请求时都会执行此方法。

希望以上内容能给您解决问题的思路。

是,实施 EndpointInterceptor is the best fit for this task, as it gives you access to the SOAP messages through the MessageContext. See the Reference Documenation