Flex Gateway新着情報
Governance新着情報
Monitoring API Manager接続をはじめとする Mule アプリケーション設定の静的値を使用する代わりに、.yaml
または .properties
ファイルを作成してプロパティを格納し、アプリケーションからプロパティを参照することができます。
プロパティファイルを設定することで、アプリケーションの構成およびメンテナンス性が向上します。
.yaml
ファイルでは、プロパティは次の形式になります。
http:
path: "/service"
port: "10000"
host: "my-api.cloudhub.io"
.properties
ファイルでは、プロパティは次の形式になります。
http.path=/service http.port=10000 http.host=my-api.cloudhub.io
Studio で [Package Explorer] ビューに移動して、プロジェクトの /src/main/resources
フォルダーを右クリックします。
[New (新規)] > [File (ファイル)] を選択します。
ファイルの名前を選択して、拡張子を .yaml
または .properties
(この形式を使用する場合) に設定します。
ファイルを編集して、必要なプロパティおよび値を定義します。
プロパティファイルを Mule アプリケーションに追加します。
Studio から:
[Global Elements (グローバル要素)] タブを開き、[Create (作成)] ボタンをクリックします。
「Configuration Properties (設定プロパティ)」という名前の要素を検索し、[OK] をクリックします。
[…] ボタンをクリックして、.yaml
または .properties
ファイルに移動します。
XML エディターから:
<configuration-properties>
要素を <mule>
内に含めて、プロパティファイル名を使用してその file
パラメーターを設定します。例:
<mule>
<configuration-properties
file="myConfiguration.yaml"
doc:name="Configuration properties"
doc:id="872422be-3571-4a52-a383-a2b0e16859d7" />`
...
</mule>
プロパティファイルを設定してプロジェクトに追加したら、次のような構文を使用してその属性を参照できます: ${propertyContainer.propertyName}
。
前のセクションで設定した例に基づくと、path
値および port
値を使用するには、構文はそれぞれ ${http.path}
および ${http.port}
になります。
たとえば、グローバル HTTP 要求設定を設定してプロパティファイルで定義された値を使用できます。
Studio から:
XML エディターから
<http:request-config
name="HTTP_Request_config"
doc:name="HTTP Request
configuration" doc:id="7120494c-0540-4ad1-a118-f5b6db3f1456"
basePath="${http.path}" >
<http:request-connection
host="${http.host}"
port="${http.port}" />
</http:request-config>
アプリケーションがデプロイされると、プロパティ値がさまざまなソースから計算され、静的にプレースホルダーを置き換えて、ソースコードに直接書き込まれたようになります。
前の例に基づくと、設定は次のようになります。
<http:request-config
name="HTTP_Request_config"
doc:name="HTTP Request
configuration" doc:id="7120494c-0540-4ad1-a118-f5b6db3f1456"
basePath="/service" >
<http:request-connection
host="my-api.cloudhub.io"
port="10000" />
</http:request-config>
コンテキストに基づく特殊文字のエスケープはありません。結果の値は参照元のコンテキスト内で有効である必要があります。
DataWeave スクリプトを含む次の例を考えてみます。
<ee:transform>
<ee:message>
<ee:set-payload>
<![CDATA[
%dw 2.0
output application/json
---
{
"message": "${message}",
}
]]>
</ee:set-payload>
</ee:message>
</ee:transform>
.properties
ファイルのコンテンツは次のようになります。
message=I love $
プロパティ置換が行われると、アプリケーションは次のようになります。
<ee:transform>
<ee:message>
<ee:set-payload>
<![CDATA[
%dw 2.0
output application/json
---
{
"message": "I love $",
}
]]>
</ee:set-payload>
</ee:message>
</ee:transform>
ドル記号 ($) は特別な意味を持ち、エスケープする必要があるため、この出力は無効な DataWeave スクリプトです。「Dataweave - 特殊文字のエスケープ」を参照してください。DataWeave スクリプトが解析される前にプロパティプレースホルダーが置き換えられることを覚えておいてください。
競合を解決するには、プロパティファイル内の値をエスケープできます。
message=I love \$
または、プロパティプレースホルダーの代わりに DataWeave の p 関数を使用することもできます。
<ee:transform>
<ee:message>
<ee:set-payload>
<![CDATA[
%dw 2.0
output application/json
---
{
"message": Mule::p("message"),
}
]]>
</ee:set-payload>
</ee:message>
</ee:transform>
プロパティはスクリプトの実行時に評価され、解析時にはスクリプトは構文的に有効なままになります。