2016-08-02 4 views
1

私の要件はなど、JDBC、Webサービスなどの外部ソースによって消費される総時間を計算することで、エンドポイント情報

私は、リクエスト・ハンドラ・アドバイスチェーンが追加されました必要なエンドポイントを計算し、時間を計算しました。それは完全に動作します。 エンドポイントコンポーネントの識別子も追加する必要があります。アドバイスクラスを介してエンドポイント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コンポーネント=(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リリースで正常に動作している:あなたのアドバイスは、ターゲットオブジェクトがdoInvokeでパラメータとして利用可能であるAbstractRequestHandlerAdvice拡張する場合

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

答えて

0

- 見ますthe javadocs

NamedComponentにキャストし、getComponentName()に電話してください。

MethodInterceptorを直接実装した場合は、invocation.getThis()を使用してハンドラへの参照を取得してください。

+0

編集した質問を参照してください。 –

+0

あなたの助けが大変ありがとうございます。 –

+0

ああ、そうです。ごめんなさい;私はそのラッパーを忘れていました - その代理人へのアクセスを提供する必要があります。改善[JIRA Issue](https://jira.spring.io/browse/INT)を開いてください。 –

関連する問題