Spring Integration Http入站网关请求记录

时间:2014-12-13 09:04:31

标签: spring-integration

您好我目前正在使用Spring Integration 4.0.3。我需要记录进入Http入站网关的实际请求。请求将在Http Inbound Messaging转换为消息之前进行记录网关并发送到网关请求通道。这就是我试图实现这一目标的方法。

  1. 在HttpRequestHandlingMessagingGateway类handleRequest方法上配置了一个aop切入点。
  2. 将自定义方法Interceptor配置为通知,并配置切入点以在aop配置中执行此通知。
  3. 在MethodInterceptor中,我正在检索Request和Response对象并记录请求。
  4. 但似乎每当我在handleRequest方法上应用aop时,调度程序servlet都无法找到我所有http入站网关使用的任何url映射的处理程序。

    我知道通过在web.xml中配置过滤器可以实现同样的目的,但我只是好奇为什么会发生这种情况....请帮助......

1 个答案:

答案 0 :(得分:1)

实际上,您无法代理HttpRequestHandlingMessagingGateway#handleRequest,因为它是final

从另一方面来说,没有理由为日志记录工作做那么复杂的AOP工作。

HttpRequestHandlingMessagingGatewayRequestContextHolder.currentRequestAttributes()填充为EvaluatationContext变量,因此您可以将其放入MessageHeader并在下游流程中的任何位置使用:

<int-http:inbound-gateway path="/foo" request-channel="requestChannel">
     <int-http:header name="requestAttributes" expression="#requestAttributes"/>
</int-http:inbound-gateway>

<publish-subscribe-channel id="requestChannel"/>

<logging-channel-adapter channel="requestChannel" 
                expression="headers.requestAttributes.request"/>