2017-02-20 63 views
2

我正在使用本地條目來註冊參數並且不會在工件中留下固定的位置,我不知道它是否是更好的解決方案。如何從註冊表資源中讀取本地條目的內容

當我在ESB Config中創建本地條目時,一切正常,但是當我在項目註冊表資源中創建時,我無法正確讀取。

我使用下面的代碼讀取本地輸入和寫入性能:

<Property description = "SetPPSUserName" expression = "get-property ('registry', 'conf: /local-entries/PPS_Username.xml')" name = "SetPPSUserName" scope = "default" type = "STRING" /> 

問題是,它加載本地條目的整個XML內容,不僅內容,例如作爲屬性:

SetPPSUserName = "<localEntry key="PPS_Username" xmlns="​http://ws.apache.org/ns/synapse"><![CDATA [content test blablab]]></ localEntry>" 

正確的是:

SetPPSUserName = "content test blablab" 

注:當我上傳車日e站點中,項目註冊表資源的本地條目不會出現在管理控制檯的本地條目列表中。

譯文從葡萄牙文翻譯成英文與谷歌翻譯

回答

3

試試這個:

設置type = OM屬性而不是STRING。

<Property description = "SetPPSUserName" expression = "get-property ('registry', 'conf: /local-entries/PPS_Username.xml')" name = "SetPPSUserName" scope = "default" type = "OM" /> 

<log level="custom"> 
<property name="call_testProp" expression="$ctx:SetPPSUserName" type="STRING"/> 
</log> 

更新1:

我的註冊表裏面localEntry:

<localEntry key="PPS_Usernamelocal" xmlns="http://ws.apache.org/ns/synapse"> 
<a> 
    <b>TEST</b> 
</a> 
</localEntry> 

我的財產並記錄了一個ESB代理內部調解:

<property name="PPS_Username" 
      expression="get-property('registry','conf:/localentries/PPS_Username.xml')" 
      scope="default" 
      type="OM"/>   
<log level="custom"> 
    <property name="PPS_UsernameB" expression="$ctx:PPS_Username//syn:a/syn:b" xmlns:syn="http://ws.apache.org/ns/synapse"/>           
</log> 

我ESB響應:

[2017-02-22 16:21:42,680] INFO - LogMediator PPS_UsernameB = TEST 
+0

它不起作用,它返回整個XML而不僅僅是內容。 我想我將不得不使用XPATH加載內容。 –

+0

當然,只需$ ctx:SetPPSUserName // prex:元素例如,在你的問題中,你把bla bla,所以它不是一個有效的xml :-D,但我的答案沒關係。 –

+0

問題不是blalbalba,而是它返回整個語句「

1

不知道如果我說得對。

如果要訪問代理內的註冊表資源,您必須執行以下步驟。

1.)創建「註冊資源項目」 2.)爲該項目添加一個「註冊資源」。由於我以前在dev studio中直接創建資源時遇到了一些問題,我總是在本地磁盤上創建一個包含內容的測試/ XML文件,並選擇「從文件系統導入」,創建資源 3)創建一個CAR爲「註冊資源項目」 4.)從CAR項目打開pom.xml並將「服務器角色」更改爲「EnterpriseServiceBus」,否則它不會部署到ESB。 5.)導出CAR並將其部署到服務器

然後,您可以像這樣在代理服務器內訪問它。

<property name="registryValue" expression="get-property('registry','gov:/path/property1.txt')"/> 

希望有所幫助。

+0

但是,而不是一個PROPERTY1.TXT我想使用「本地條目」。 但是,而不是一個PROPERTY1.TXT我想使用「本地條目」。 然後get-property返回「Local Entry」的內容,而不是整個XML。 –