AFAIK、プロパティファイルは、サーバーの初回起動時に読み込まれます。多くのプロパティが参照されるのは1つのキー(一意)のみですが。
しかし、この要件に対応するためには、Javaコードを使用する必要があります。このコードは、リクエスト(id)に基づいて特定のプロパティファイルを読み込む責任があります。その後、他の用途のために財産を読んで、それを変数に設定します。異なる結果を得るためにhttp://localhost:8081/prop?id=1またはhttp://localhost:8081/prop?id=2:
private Properties prop = new Properties();
private InputStream input = null;
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
String id = ((ParameterMap)message.getInboundProperty("http.query.params")).get("id");
input = getClass().getResourceAsStream("../property" + id + ".properties");
prop.load(input);
message.setInvocationProperty("communityToSync", prop.getProperty("dgc.metamodel.CommunityToSync"));
message.setInvocationProperty("domainToSync", prop.getProperty("dgc.metamodel.DomainToSync"));
私は、単純な流れ
<flow name="propertyFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/prop" allowedMethods="GET" doc:name="HTTP"/>
<custom-transformer class="example.ReadProperty" doc:name="Java"/>
<logger message="CommunityToSync = #[flowVars.communityToSync], DomainToSync = #[flowVars.domainToSync]" level="INFO" doc:name="Logger"/>
</flow>
ブラウザを介してそれを実行して、それをテストしました。
Muleサーバーの起動中に例外が発生しました。エラーが発生してデプロイメントが失敗しました。 'name'プロパティ名を持つBeanを作成中にエラーが発生しました:Beanの初期化に失敗しました。ネストされた例外 'java.util.ArrayList'型のプロパティ値を 'messageProcessors'プロパティの必須型 'java.util.List'に変換できませんでした。プロパティ 'messageProcessors [0]'の[test_project.ReadProperty]タイプの値を必須のタイプ[org.mule.api.processor.MessageProcessor]に変換できません:一致するエディタまたは変換ストラテジが見つかりませんでした 'このメッセージの戻り値としてメッセージを渡していますtransformMessageメソッド。 – Arkade
クラスAbstractMessageTransformerを拡張してこの問題を修正しました。 – Arkade