2016-08-02 11 views
1

Meine Forderung ist die Gesamtzeit durch externe Quellen wie jdbc, Web-Service etc. verbraucht zu berechnen,Endpoint Informationen in der Anfrage-Handler-Beratung-Kette

Ich habe Anfrage-Handler-Beratung-Kette in der addierte benötigte Endpunkte und berechnete die Zeit. Es funktioniert perfekt. Ich muss auch die Kennung der Endpunktkomponente hinzufügen. Gibt es eine Möglichkeit, die Endpunkt-ID über die Advice-Klasse zu erhalten?

Ex:

<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> 

Kann ich die jdbc Endpunkt-ID in der Beratung Klasse bekommen? Bitte vorschlagen. Vielen Dank im Voraus.

Hinweis-Klasse erweitert AbstractRequestHandlerAdvice und wenn ich versuche zu casten NamedComponent Komponente = (NamedComponent) target;

Ich erhalte die unten Ausnahme - 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

Fix funktioniert gut mit 4.3.2 Release:

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

Antwort

0

Wenn Ihre Beratung erstreckt AbstractRequestHandlerAdvice das Zielobjekt als Parameter in doInvoke verfügbar ist - siehe the javadocs.

Werfen Sie es auf NamedComponent und rufen Sie getComponentName().

Wenn Sie MethodInterceptor direkt implementiert haben, verwenden Sie invocation.getThis(), um einen Verweis auf den Handler zu erhalten.

+0

Bitte beachten Sie die bearbeitet die Frage .. –

+0

Ihre Hilfe wird sehr geschätzt. –

+0

Oh, ja; Es tut uns leid; Ich habe diesen Wrapper vergessen - wir sollten Zugang zu seinem Delegaten bereitstellen; Bitte öffnen Sie eine Verbesserung [JIRA Issue] (https://jira.spring.io/browse/INT). –