2017-06-10 1 views
0

es ist xml.ftl:Wie man Request-Handler-Advice-Chain und ExpressionEvaluatingRequestHandlerAdvice verwendet?

<integration:channel id="${provider_name}Channel"/> 
    <integration:header-enricher input-channel="${provider_name}Channel" 
           output-channel="${provider_name}reformedNumberChannel"> 
     <integration:header name="reformedNumber" 
          expression="T(com.tosan.chapar.core.helper.PhoneNumberHelper).removeInitialPlus(headers[recipient])"/> 
     <integration:header name="body" expression="payload"/> 
    </integration:header-enricher> 

    <jdbc:outbound-gateway request-channel="${provider_name}reformedNumberChannel" 
          data-source="${provider_name}DataSource" 
          update="insert into `outgoing_message` (`from_mobile_number`, `dest_mobile_number`, `message_body`, `due_date`, `creation_date`, `udh`, `source_port`, `dest_port`, `dcs`, `priority`, `status`) 
              values ('${sms_number}', :headers[reformedNumber], :payload, now(), now(), '', :headers[port], :headers[port], :headers[dcs], :headers[priority], null);" 
          reply-channel="${provider_name}OutputChannel"> 
     <jdbc:request-handler-advice-chain> 
      <bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice"> 
       <property name="trapException" value="true"/> 
       <property name="onFailureExpression" value="payload"/> 
       <property name="failureChannel" value="failures"/> 
      </bean> 

     </jdbc:request-handler-advice-chain> 
    </jdbc:outbound-gateway> 

    <integration:transformer input-channel="failures" output-channel="stdout" 
        expression="'Removal of '" ></integration:transformer> 
    <integration:channel id="stdout"/> 
    <integration:service-activator input-channel="stdout" 
            ref="messageLogServiceWrapperImpl" method="log"/> 

    <integration:channel id="${provider_name}MessageLogChannel"/> 

ich bekommen MessageHandlingException wollen, die in jdbc werfen, mit über XML-Datei erhalte ich diese Ausnahme:

Exception in thread "main" `org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice#6acc3b9b' defined in Byte array resource [resource loaded from byte array]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type [java.lang.String] to required type [org.springframework.messaging.MessageChannel] for property 'failureChannel'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.messaging.MessageChannel] for property 'failureChannel': no matching editors or conversion strategy found` 

Wie kann ich failureChannel gesetzt ???? ??

Antwort

1

Sie haben stattdessen

<property name="failureChannel" ref="failures"/> 

zu verwenden. Ich meine ref für die Bean-Referenz, nicht value. Siehe ihre Beschreibung in der <property> XSD.