2017-01-26 2 views
0
<int:inbound-channel-adapter channel="requestChannel" 
    expression="''"> 
    <int:poller cron="0 0/2 * * * ?"/> 
</int:inbound-channel-adapter> 

<int:chain input-channel="requestChannel" output-channel="requestConcactChannel"> 
    <int:header-enricher default-overwrite="true"> 
     <int:header name="Accept" value="application/json" /> 
     <int:header name="OData-MaxVersion" value="4.0" /> 
     <int:header name="OData-Version" value="4.0" /> 
    </int:header-enricher> 
    <int-http:outbound-gateway 
     url="#{requestbl.geturl()}" 
     expected-response-type="java.lang.String" http-method="GET" 
     header-mapper="headerMapper" > 
    </int-http:outbound-gateway> 
    <int:service-activator ref="accountResponseHandler" /> 
</int:chain> 

После этого код, который я использую для отправки запроса по некоторым адресам через исходящий-шлюз. Я должен генерировать этот URL динамически.Вызов исходящего шлюза с динамическими параметрами.

requestbl.geturl() возвращает мне значение Url, но он вызывается только один раз, когда приложение было загружено. Я хочу загружать его каждый раз, когда запрос отправляется.

ответ

1

Существует альтернатива для вас:

<xsd:attribute name="url-expression" type="xsd:string" use="optional"> 
     <xsd:annotation> 
      <xsd:documentation> 
       <![CDATA[ 
SpEL Expression resolving to a URL to which the requests should be sent. The resolved 
value may include {placeholders} for further evaluation against uri-variables. 
       ]]></xsd:documentation> 
     </xsd:annotation> 
    </xsd:attribute> 

Это называется во время выполнения против каждого requestMessage, а также вы можете вызвать любой компонент из этого выражения.

Итак, ваш вариант использования будет выглядеть так:

url-expression="@requestbl.geturl()" 
+0

Спасибо за объяснение. –