2015-01-05 5 views
1

Я пытаюсь использовать функцию безопасности Vail Mule. Я создал .properties file, Security Property Placeholder и определил алгоритм ключа и шифрования. Теперь я хочу использовать некоторые свойства из файла, когда возвращаю HTTP-ответ.Как читать свойства из файла .properties в Mule

У меня есть файл SRC/основные/ресурсы/data.properties, который содержит, например:

В моем холсте под XML конфигурации я добавил:

<secure-property-placeholder:config name="Secure_Property_Placeholder" key="24681357" location="data.properties" doc:name="Secure Property Placeholder" encryptionAlgorithm="DES"/>

<set-variable variableName="card.number" value="${number}" />

В моем холсте у меня есть поток сообщений, который строит xml «Создать XML-ответ на основе пользователя». Значение в регулировках:

Это не работает. Ошибки я получаю:

-> org.mule.module.launcher.DeploymentInitException: IllegalArgumentException: Could not resolve placeholder 'key' in string value "${key}"

-> Caused by: org.mule.api.lifecycle.InitialisationException: Invalid bean definition with name 'org.mule.autogen.bean.13' defined in null: Could not resolve placeholder 'key' in string value "${key}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'key' in string value "${key}"

-> Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'key' in string value "${key}"

Кто-нибудь знает, как я могу читать свойства из .properties файл (учетные хранилище)? А потом использовать его в моем потоке?

Спасибо, Керен

+0

Пример кода, который вы предоставляете, похоже, не соответствует сообщению об ошибке, которое вы вставили. Можете ли вы представить более полный пример, показывающий, где вы используете свойство § {key} –

+0

@Pontus Ullgren. Я добавил скриншоты, они помогают? Я пытаюсь понять, как использовать Mule Credentials Vault на примере Мула: http://www.mulesoft.org/documentation/display/current/Anypoint+Enterprise+Security+Example+Application – KerenSi

+0

Одна очевидная ошибка, которую я вижу, - это то, как вы пытаетесь доступ к переменной card.number. Вы не должны использовать § {card.number}, вместо этого вы должны использовать # [flowVars.'card.number ']. Однако он все еще не объясняет недостающее свойство ключа. –

ответ

1

Если вы просто хотите получить значение для свойства number и добавить его в XML, вы можете использовать $ {number} from .properties. Нет необходимости определять какие-либо другие переменные в Configuration XML.

<set-payload value="&lt;user&gt;&lt;name&gt;Royal Bank of Canada&lt;/name&gt;&lt;id&gt;Royal_Bank_Of_Canada&lt;/id&gt;&lt;cc&gt;&lt;company&gt;&gt;Visa&lt;/company&gt;&lt;number&gt;${number}&lt;/number&gt;&lt;secret&gt;123&lt;/secret&gt;&lt;/cc&gt;&lt;/user&gt;" doc:name="Set Payload"/> 

Однако обратите внимание, что свойство заполнитель решается при запуске, так что вы не будете иметь возможности динамически получить свойство на основе некоторого пользовательского ввода. Для этого вам нужно будет сделать некоторую Java-кодировку.This SO post дает вам несколько советов о том, как это можно достичь. На основе этих ответов я создал simple example о том, как это можно сделать с помощью очень простого вспомогательного компонента.

0

Я боюсь, что вы просто не можете. Mule Credentials Vault - это корпоративная функция, поэтому, если вы не являетесь клиентом MuleSoft, у вас не будет доступа к исходному коду.

Даже если бы вы были клиентом, api, который вы использовали бы, был бы неподдерживаемым. Я предлагаю вручную создать пользовательский компонент java, выставляющий ваш код и Jasypt (не как заполнитель свойств, а как библиотека).

Другой вариант, если вы являетесь клиентом (я думаю, вам дано, что вы используете хранилище учетных данных), обратитесь в официальную службу поддержки, чтобы они позаботились об этом для вас.

+0

Итак, в основном вы говорите, что клиенты Mule не могут использовать хранилище Mule Credentials Vault? Как я уже сказал, мои требования используйте эту функцию безопасности Mule, и я пытаюсь выяснить, как с ней работать. – KerenSi

+0

Я говорю об обратном, только клиенты mule могут использовать хранилище учетных данных, поскольку это корпоративная функция. –

+0

Но вы говорите, что даже если я являюсь корпоративным пользователем, я должен работать с Java и Jasypt ... Я хочу понять, как рисовать информацию из файлов .properties, это похоже на базовую операцию. У него нет простого решения? – KerenSi

0

Заполнитель свойств используется при запуске, поэтому вы не сможете динамически извлекать свойство, основанное на некотором пользовательском вводе.

Используйте $ {ИмениСвойства} из .properties в MEL для доступа конкретного свойства

0

От Dataweave вы можете прочитать его, как указано ниже р ('VARIABLENAME') где VariableName определяется в файле свойств Ex: VARIABLENAME = 15

+0

Есть ли упоминание о Dataweave в вопросе? Если я не пропущу что-то, это не ответ на исходный вопрос. – lolbas

Смежные вопросы