request-handler-advice-chain

时间:2016-08-02 11:23:50

标签: spring-integration

我的要求是计算外部源(如jdbc,Web服务等)消耗的总时间,

我在所需的端点中添加了request-handler-advice-chain并计算了时间。它完美地运作。 我还要添加端点组件的标识符。有没有办法通过建议类获取端点ID。

例如:

    <int-jdbc:stored-proc-outbound-gateway id="myProcID" request-channel="myChannel" data-source="dataSource"
....
        <int-jdbc:request-handler-advice-chain>
             <ref bean="statsAdvice" />
        </int-jdbc:request-handler-advice-chain> 
    </int-jdbc:stored-proc-outbound-gateway>

我可以在通知类中获取jdbc端点ID吗?请建议。 提前谢谢。

建议类扩展了AbstractRequestHandlerAdvice,当我尝试强制转换时     NamedComponent component =(NamedComponent)target;

我收到以下异常 - org.springframework.messaging.MessageHandlingException: error occurred in message handler [org.springframework.integration.jdbc.StoredProcOutboundGateway#0]; nested exception is java.lang.ClassCastException: org.springframework.integration.handler.AbstractReplyProducingMessageHandler$AdvisedRequestHandler

修复工作正常,4.3.2发布:

((AbstractReplyProducingMessageHandler.RequestHandler) target).getAdvisedHandler().getComponentName();

1 个答案:

答案 0 :(得分:0)

如果您的建议延伸AbstractRequestHandlerAdvice,目标对象可作为doInvoke中的参数使用 - 请参阅the javadocs

将其投放到NamedComponent并致电getComponentName()

如果您直接实施MethodInterceptor,请使用invocation.getThis()获取对处理程序的引用。