2017-02-20 29 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" 

注:私は目にCARをアップロードeサイトでは、プロジェクトレジストリリソースのローカルエントリが管理コンソールのローカルエントリ一覧に表示されません。私は右のそれを得た場合

答えて

3

これを試してみてください。

STRINGではなくTYPE = OMを設定してください。

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

UPDATE 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 blaを入れて、それは有効なxml: - Dではありませんが、私の答えはOKです。 –

+0

問題はblalbalbaではなく、コンテンツの代わりに "

1

わからないGoogleの翻訳で英語にポルトガル語から翻訳

メッセージ。

プロキシ内のレジストリリソースにアクセスするには、次の手順を実行する必要があります。

1.) "レジストリリソースプロジェクト"を作成します 2.) "レジストリリソース"をそのプロジェクトに追加します。 devスタジオで直接リソースを作成することで私は過去のいくつかの問題に直面していましたので、私はいつも自分のローカルディスク上のコンテンツでテスト/ XMLファイルを作成し、 "ファイルシステムからインポート"を選択してリソースを作成します 3.)CAR "Registry Resource Project"の場合 4. CARプロジェクトからpom.xmlを開き、 "Server role"を "EnterpriseServiceBus"に変更します。それ以外の場合はESBに展開されません。 5.)CARをエクスポートしてサーバーにデプロイ

これで、このようにProxy内でアクセスできます。

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

希望します。

+0

しかし、私はPROPERTY1.TXTの代わりに "Local Entry"を使いたいと思います。 PROPERTY1.TXTの代わりに「ローカルエントリ」を使用したいと思います。 そして、get-propertyはXML全体ではなく、 "Local Entry"の内容を返します。 –

関連する問題