春天:响应时间

时间:2015-06-15 16:23:33

标签: java spring spring-ws

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

那么有没有办法使用SpringWS计算它?比如在payloadInterceptor中?

2 个答案:

答案 0 :(得分:3)

是的,实现EndpointInterceptor最适合此任务,因为它允许您通过MessageContext访问SOAP消息。请参阅Reference Documenation

答案 1 :(得分:-1)

我认为你可以使用两种工具。

  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 {
        ...
    }
    
  2. JoinPoint对象具有方法参数的信息

    1. 覆盖实现SOAPHandler类的自定义类的方法handleMessage。每次收到SOAP请求时都会执行此方法。
    2. 我希望这可以为您提供解决问题的想法。