2017-01-19 63 views
0

我使用apache駱駝在通過一個端口上的Tomcat上運行的一個URI(API網關)端點之間創建路由,我映射到運行在Tomcat上的另一個URI在不同的域和端口上。如何在Apache駝峯的URI端點中使用動態值XML配置

<bean id="hostnameVerifier" class="org.apache.http.conn.ssl.AllowAllHostnameVerifier" /> 
... 
<camel:sslContextParameters id="ssl"> 
    <camel:keyManagers keyPassword="password"> 
     <camel:keyStore ... /> 
    </camel:keyManagers> 
    <camel:trustManagers> 
     <camel:keyStore ... /> 
    </camel:trustManagers> 
</camel:sslContextParameters> 
    .... 

<rest path="/MyService" consumes="application/json" produces="application/json"> 

    <post uri="/login"> 
     <description>Authenticate User</description> 
     <route streamCache="true"> 
      <to 
       uri="https4://domain-b:9000/Auth/user/login?bridgeEndpoint=true&amp;sslContextParametersRef=ssl&amp;x509HostnameVerifier=hostnameVerifier" /> 
     </route> 
    </post> 
    ... 
</rest> 

現在,據我硬編碼域到我的端點,事情工作正常。當我必須從某個配置文件的輸入中動態填充該值時,會出現問題。

這就是我想實現相同的 -

<bean id="properties" class="org.apache.camel.component.properties.PropertiesComponent"> 
    <property name="location" value="classpath:${LOCATION_PATH}propsfile.properties"/> 
</bean> 

屬性鍵的名稱是「域」,現在在我的終點確定指標我寫的一樣 -

<to 
    uri="https4://${properties.domain}:9000/Auth/user/login?bridgeEndpoint=true&amp;sslContextParametersRef=ssl&amp;x509HostnameVerifier=hostnameVerifier" /> 

基本上在加載名爲properties的bean中的屬性後,我試圖用$ {properties.domain}或#{properties.domain}替換domain-b,但似乎沒有工作。

如果任何人只能在基於XML的配置中建議如何從屬性文件讀取URL域,那將非常棒。

-AJ

+0

你嘗試'URI =「https4:// {{properties.domain}}:9000'?裏面駱駝路線元素屬性是可用的那樣。 – Vadim

+0

讓我檢查並更新。謝謝 – aj1984

+0

它沒有這樣工作,任何其他建議? – aj1984

回答

0

你必須使用屬性佔位符,實現動態URI你想要的方式。

例如:

<camelContext ...> 
    <propertyPlaceholder id="properties" location="YOUR_PROPERTY_FILE_LOCATION"/> 
</camelContext> 

然後用

<to uri="https4://{{properties.domain}}:9000/.......> 

注試試:當您正在使用的Spring bean 「PropertiesComponent」配置您的屬性文件,你必須使用駱駝Property組件在駱駝路線內實現動態值加載。

0

由於駱駝2.16

我們可以使用

.from("file://path") 
.toD("file://folder/${file:onlyname}") 

我們可以使用文件