フローはhttp要求を取得し、javaコンポーネントはzipファイルを作成して返します。 zipファイルがダウンロードされますが、解凍すると「圧縮されたフォルダが無効です」というエラーが表示されます。一時的な場所でJavaによって作成された一時的なzipは正常に動作します。問題は、zipファイルをペイロードとして設定する方法です。Mule ESB:Zipファイルを提供するJavaコンポーネントですが、解凍できません。
public Object onCall(MuleEventContext eventContext) throws Exception {
MuleMessage message = eventContext.getMessage();
message.setOutboundProperty("Content-type", "application/zip");
message.setOutboundProperty("Content-Disposition", "attachment;filename=\"my_Logs.zip\"");
File tempZip = File.createTempFile("LOGS", ".zip");
FileOutputStream fos = new FileOutputStream(tempZip);
ZipOutputStream zipOut = new ZipOutputStream(fos);
File logDir = new File("C:/Temp/logs");
zipOut.setMethod(ZipOutputStream.DEFLATED);
zipOut.setLevel(9);
FileInputStream in =null;
int len =0;
byte[] buf = new byte[1024];
for(File file : logDir.listFiles()){
String filename = file.getName();
in = new FileInputStream(file);
zipOut.putNextEntry(new ZipEntry(filename));
while ((len = in.read(buf))>0){
zipOut.write(buf,0,len);
}
zipOut.closeEntry();
in.close();
}
zipOut.close();
message.setPayload(tempZip);
return message;
}
フロー
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="httppayloadFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="*" doc:name="HTTP"/>
<message-filter doc:name="Filter favicon">
<not-filter>
<wildcard-filter pattern="/favicon.ico" caseSensitive="true"/>
</not-filter>
</message-filter>
<component class="com.home.zipper.ZipLogs" doc:name="Java"/>
</flow>
私はここで間違って何をしているのですか?助けをよだれにする