Body with byte array issue in camel route

Solution Unverified - Updated -

Issue

  • We have the following code
private byte[] zipFiles(ArrayList<byte[]> files) throws IOException {
        log.info(files.size());
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ZipOutputStream zos = new ZipOutputStream(baos);
        int i = 0;

        for (byte[] pdf : files) {
            ZipEntry entry = new ZipEntry("doc_" + i++ + ".pdf");
            entry.setSize(pdf.length);
            log.info("Pdf len: " + pdf.length);
            zos.putNextEntry(entry);
            zos.write(pdf);
            zos.closeEntry();
        }
        baos.flush();
        zos.close();
        baos.close();
        return baos.toByteArray();

    }
  • In a processor, we do
byte[] out = zipFiles("Araaylist files "); 
exch.getIn().setBody(out, byte[].class);
  • When we write this output directly to the file system the zip file is correct !
    e.g. to(file:/path/to/file) OK . Zip is ok

  • When we return this body as cxfrs response , we get a corrupt file. This used to work correctly in version 6.0 / with cxrfs .
    Also when we try to email this zip file / it comes out corrupt. Email go through an email queue .camel smtp .

Environment

  • Red Hat JBoss Fuse
    • 6.x
  • Apache Camel

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.