Есть ли простой способ настроить поток для однократного чтения одного файла из пути к классам? Мне не нужно опроса для файла. Мне просто нужно прочитать известный файл и установить его содержимое в качестве полезной нагрузки сообщения.
Mule чтение одного файла из пути classpath во время потока
Ответ 1
Используйте процессор сообщений set-payload
и выражение MEL:
<set-payload value="#[Thread.currentThread().getContextClassLoader().getResourceAsStream('my-file.abc')]" />
Ответ 2
По какой-то причине я не могу сделать решение, предложенное Дэвидом Доссотом, работать. Я был вдохновлен этим ответом и придумал другое решение
<spring:bean id="myResource" class="org.apache.commons.io.IOUtils" factory-method="toString">
<spring:constructor-arg value="classpath:path/to/myResource.txt" type="java.io.InputStream"/>
</spring:bean>
а затем вы можете использовать set-loadload следующим образом
<set-payload value="#[app.registry.myResource]" doc:name="Set Payload"/>
что приведет к установке полезной нагрузки с содержимым файла в виде строки.
Этот метод имеет то преимущество, что содержимое файла ресурсов загружается только один раз в bean типа String. Поэтому, если ваш оператор set-payload выполняется часто, это может повысить производительность.
Ответ 3
Как и в Mule 3.4, используйте трансформатор синтаксического анализа
<parse-template location="my-resurce.txt" doc:name="Load resource as a String"/>
Это сделает вещи намного проще.
Возможно, вам нужно будет установить тип mime, но в зависимости от того, как вы собираетесь использовать шаблон.
Общие ошибки включают использование полного пути в трансформаторе, например, c:\users\myusers\mule\myfile.txt Это не будет хорошо компилироваться.
Вы также можете использовать выражение Mule в шаблоне синтаксического анализа и, например, Rich Text.
http://www.mulesoft.org/documentation/display/current/Parse+Template+Reference
Ответ 4
<scripting:component doc:name="Get xls File">
<scripting:script engine="Groovy"><![CDATA[new File('C:/project/src/main/resources/account.xls').getText('UTF-8')]]></scripting:script>
</scripting:component>
Ответ 5
<parse-template location="my-resurce.txt" doc:name="Load resource as a String"/>
Файл может отлично не содержать выражения MEL вообще, и в этом случае он фактически загружается как есть, и он становится полезной нагрузкой.
Ответ 6
Я пытаюсь передать трансформатор класса Java, чтобы вы могли использовать следующие
note: путь - это прямой пакет, содержащий нужный вам файл для чтения am сохранить путь внутри переменной mule, а затем прочитать файл содержимого и сохранить его значение в полезной нагрузке
.
public class PayloadFileReader extends AbstractMessageTransformer {
public Object transformMessage(MuleMessage message, String outputEncoding)
throws TransformerException {
String result = "";
try {
result = readFileTest(message.getInvocationProperty("path")
.toString());
} catch (Exception e) {
e.printStackTrace();
}
message.setPayload(result);
return message;
}
public String readFileTest(String path) throws FileNotFoundException,
IOException, Exception {
ClassLoader classLoader = getClass().getClassLoader();
"+classLoader.getResource("samples/v3/addVal-request.sample").getFile());
File file = new File(classLoader.getResource(path).getFile());
FileReader fileReader = new FileReader(file);
BufferedReader bufferReader = null;
StringBuilder stringBuffer = new StringBuilder();
String line;
try {
bufferReader = new BufferedReader(fileReader);
while ((line = bufferReader.readLine()) != null) {
stringBuffer.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bufferReader != null) {
try {
bufferReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return stringBuffer.toString();
}
Ответ 7
Вы можете создать "Spring Bean", который пытается "импортировать" файл (предположим, файл Mile XML conefiguration). Пример кода ниже:
<spring:beans>
<spring:import resource="classpath:sample-mule-integration.xml"/>
</spring:beans>
Или вы можете попробовать, поместив файл в заполнитель свойств ниже
<context:property-placeholder location="file:E:\NewMuleWorkSpace\springbeanproperties\src\main\resources\property.properties"/>
Или вы даже можете прочитать файл с помощью компонента Groovy с образцом кода:
File file = new File("C://Users//schiraboina//Desktop//123.txt")
payload=file.getText()