我正在使用Anypoint Studio 6.2和Mule Runtime 3.8.3。
我想在src / main / resources / input文件夹中取一个文件并将其压缩并保存到src / main / resources / output,然后用zip文件替换消息有效内容。
要做到这一点,我添加了一个java变换器,它引用了一个我称之为Zip的java类,它压缩文件并将其保存到输出文件夹但是如何将新创建的zip文件添加到消息的有效负载中? / p>
Java Zip类:
public class Zip extends AbstractMessageTransformer
{
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
System.out.print("***java.utils.Zip started***");
String sourceFile = "src/main/resources/input/log4j2.xml";
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fos = new FileOutputStream("src/main/resources/output/log4j2.zip");
ZipOutputStream zipOut = new ZipOutputStream(fos);
File fileToZip = new File(sourceFile);
fis = new FileInputStream(fileToZip);
ZipEntry zipEntry = new ZipEntry(fileToZip.getName());
zipOut.putNextEntry(zipEntry);
final byte[] bytes = new byte[1024];
int length;
while((length = fis.read(bytes)) >= 0) {
zipOut.write(bytes, 0, length);
}
message.setPayload(????);
zipOut.close();
fis.close();
fos.close();
} catch (FileNotFoundException e) {
//File not found
e.printStackTrace();
} catch (IOException e) {
//IO Exception
e.printStackTrace();
}
System.out.print("***java.utils.Zip completed***");
return message;
}
}
由于
答案 0 :(得分:0)
message.setPayload( '的src /主/资源/输出/ log4j2.zip');
现在,您将在有效负载中找到可以引用的zip文件的位置。
或者使用zip文件路径创建属性调用,并且可以在set payload组件中使用。
message.setProperty(“test”,“src / main / resources / output / log4j2.zip”,PropertyScope.INVOCATION);
在set payload中,这可以用作#[flowVars.test]