我的要求是计算外部源(如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();
答案 0 :(得分:0)
如果您的建议延伸AbstractRequestHandlerAdvice
,目标对象可作为doInvoke
中的参数使用 - 请参阅the javadocs。
将其投放到NamedComponent
并致电getComponentName()
。
如果您直接实施MethodInterceptor
,请使用invocation.getThis()
获取对处理程序的引用。