I haven't pasted the exception message since I am confused why my Eclipse
couldn't stop at the generic Exception and goes directly to finally. Or
maybe my eyes are too tired.

The exception is caught here, inside
org.apache.james.core.MimeMessageWrapper
----------------------
    private synchronized void loadMessage() throws MessagingException {
        if (message != null) {
            //Another thread has already loaded this message
            return;
        }
        InputStream in = null;
        try {
            in = source.getInputStream();
            headers = new MailHeaders(in);

            ByteArrayInputStream headersIn
                    = new ByteArrayInputStream(headers.toByteArray());
            in = new SequenceInputStream(headersIn, in);

            message = new MimeMessage(session, in);
        } catch (IOException ioe) {
                System.out.println(ioe);
            throw new MessagingException("Unable to parse stream: " +
ioe.getMessage(), ioe);
        } catch (Exception e) {
            System.out.println(e);
            e.printStackTrace();
        } finally {
            IOUtil.shutdownStream(in);
        }
    }
-------------------------

But it doesn't stop at the breakpoints I set at

throw new MessagingException....

and

e.printStackTrace....

but it stops at IOUtil.shutdownStream(in);

----------------

I add
        } catch (Exception e) {
            System.out.println(e);
            e.printStackTrace();
in case it is other exception, but it was not caught here.


-----------------

I will try your suggestion.


On 12/30/05, Stefano Bagnara <[EMAIL PROTECTED]> wrote:
>
> Edward Tan wrote:
> > I just found out the culprit, it is not James code. It is
> > javax.mail.MimeMessage
> > [...]
> >     if (is instanceof SharedInputStream) {
> >         SharedInputStream sis = (SharedInputStream)is;
> >         contentStream = sis.newStream(sis.getPosition(), -1);
> >     } else {
> >         try {
> >         content = ASCIIUtility.getBytes(is);
> >         } catch (IOException ioex) {
> >         throw new MessagingException("IOException", ioex);
> >         }
> >     }
>
> I investigated a few months ago on using always
> com.sun.mail.util.SharedByteArrayInputStream when loading message
> sources to improve sun javamail performance.
>
> I replaced the following line in MimeMessageWrapper.loadMessage()
>
> ByteArrayInputStream headersIn = new
> SharedByteArrayInputStream(headers.toByteArray());
>
> And the following in MimeMessageJDBCSource.getInputStream():
>
> InputStream in = new SharedByteArrayInputStream(headers);
>
> But I've had no time to do more tests.
>
> > -------------------------------------------
> >
> > I traced that the
> >
> > while ((len = is.read(buf, 0, size)) != -1)
> >         bos.write(buf, 0, len);
> >
> > causes the exception.
> > -----------------------------------
>
> Again, What is the real exception? ;-)
>
> > With big attachment, this will crash. Any idea to avoid this?
>
> If you are confortable with james building try the above change and let
> us know if it solve the problem!
>
> Stefano
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to