15

クラスパスから単一のファイルを一度に読み取るようにフローを構成する簡単な方法はありますか? ファイルをポーリングする必要はありません。既知のファイルを読み取り、その内容をメッセージ ペイロードとして設定するだけです。

4

8 に答える 8

23

set-payloadメッセージ プロセッサと MEL 式を使用します。

<set-payload value="#[Thread.currentThread().getContextClassLoader().getResourceAsStream('my-file.abc')]" />
于 2012-11-02T21:51:34.760 に答える
0

以下を使用できるように、Javaクラストランスフォーマーをスローしようとしています

注:パスは、読み取りたいファイルを含む直接パッケージです。パスをミュール変数内に保存し、ファイルの内容を読み取り、その値をペイロードに保存します

.

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();
}
于 2015-10-28T09:49:42.600 に答える
0

ファイルを「インポート」しようとする「Spring Bean」を作成できます (Mule XML 構成ファイルを想定します)。以下のサンプルコード:

<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()  
于 2015-12-09T10:29:03.343 に答える
0
    <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>
于 2014-08-25T22:46:52.033 に答える