2017-10-12 22 views
0

Anypoint Studio 6.2 및 Mule 런타임 3.8.3을 사용하고 있습니다.Mule 자바 변 환기에서 페이로드에 zip 파일을 전달하는 방법은 무엇입니까?

src/main/resources/input 폴더에서 파일을 가져 와서 압축하여 src/main/resources/output에 저장 한 다음 메시지 페이로드를 zip 파일로 바꿉니다.

이렇게하려면 파일을 압축하여 출력 폴더에 저장하는 Zip이라는 자바 클래스를 참조하는 자바 변환기가 추가되었지만 새로 만든 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

message.setPayload ('SRC/메인/자원/출력/log4j2.zip');

이제 참조 할 수있는 페이로드에 zip 파일의 위치를 ​​갖게됩니다.

또는 zip 파일 경로로 속성 호출을 만들고 set payload 구성 요소에서 사용할 수 있습니다.

message.setProperty ("test", "src/main/resources/output/log4j2.zip", PropertyScope.INVOCATION);

는 설정 페이로드에서 이것은 [flowVars.test]

+0

내가 물리적으로 페이로드에 파일을 추가 할 수 또는 난 단지 위치를 추가 할 수 있습니다 #로 사용할 수 있습니다? Thanks – user3165854

+0

위치 추가 + zip 파일 이름 –