我有一个SOAP webservice(spring ws),需要保存我收到的每个请求的响应时间。我可以创建一个servlet过滤器来测量HTTP请求和HTTP响应之间的时差。但是,我需要记录响应时间以及我从soap请求信封中读取的一些值,并且由于此时请求是原始的并且需要被解组,因此对于每个请求来说,这是一个昂贵且冗余的操作。
那么有没有办法使用SpringWS计算它?比如在payloadInterceptor中?
答案 0 :(得分:3)
是的,实现EndpointInterceptor
最适合此任务,因为它允许您通过MessageContext
访问SOAP消息。请参阅Reference Documenation。
答案 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 {
...
}
JoinPoint对象具有方法参数的信息
我希望这可以为您提供解决问题的想法。