Stefano Bagnara schrieb:
> Joachim Draeger wrote:
>> Am Samstag, den 13.01.2007, 16:30 +0000 schrieb robert burrell donkin:
>>> (moving on list from https://issues.apache.org/jira/browse/JAMES-760)
>>>
>>> TorqueMimeMessage uses a byte arrays for the message bodies and the
>>> MimeMessage is completely built up before being returned.
>>>
>>> this is great when you want to do mailet processing but is more
>>> resource hungry (when using a protocol such as IMAP) than simply
>>> pushing the data down the pipe to the client without using a byte
>>> array.
>>
>> This could be perfectly done when you are reading the data from file
>> system, as it is planned for the future. The optimal way is just passing
>> over the InputStream, of course.
>> AFAIK current JDBC drivers (except oracle?) are not able to stream BLOBs
>> without loading it completely into memory.
>
> I did a lot of tests in this regard for streaming in-out blobs to the
> dbs.
>
> I've been succesfull with Oracle 10 all updated both in reading and
> writing. I've also had success with mysql 5 and latest connector beta
> (few months ago). I failed with derby, mysql3 and oracle 9 with his
> drivers. I had partial success with mysql 4 (new drivers) and oracle9
> (new drivers). I this that the latest derby should work (when used in
> embedded mode and not in network mode). I remember that mysql needed
> some hack to work fine.
>
> The streaming while *reading* code is already present in trunk (you
> only have to change the "inMemorySizeLimit" configuration in your
> config.xml)
> We had weird issues while testing it, but in my TODO list there is a
> note about testing it more.
>
> The writing code is still on my HD because it had much more issues and
> we was still testing the reading code.

Just a quick note.. I use the current streaming code without problems at
the moment with mysql 5 + connector. Maybe we allready fix the issuses
when workin on other bugs ;-)


>
>> Another problem could be transferring a big message (20MB) over a slow
>> dialup connection, which would block one DB connection for a long time.
>> So with JDBC there is probably no way to avoid the byte array for the
>> body.
>
> You're right, this is an issue to take into consideration and I never
> thought about it before: thank you for pointing this out!
>
>> One improvement can be loading the body lazily, so there is only one
>> body in memory at the same time.
>
> This should be already managed by the
> MimeMessageWrapper/MimeMessageSource stuff: maybe TorqueMimeMessage
> can be refactored to use a MimeMessageWrapper and provide a
> TorqueMimeMessageSource instead.

+1 This makes really sense.

>
>> Headers should probably be requested and fetched outside a MimeMessage.
>> (few headers, many messages, one query)
>>
>> Please consider current Torque implementation as a prototype. At the
>> moment I'm not even sure if we should work with MimeMessages, as its
>> concept is based too much on lazy-loading.
>> The current blocker is the FetchCommand implementation as it was written
>> with an in-memory-store. It examines the MimeMessage completely, even if
>> only flags are fetched.
>>
>> New FetchCommand implementation is on the way. :-)
>>
>> Joachim
>
> Cool!
> Stefano
>

Im looking forward to this new code. Thx for all your work Joachim.

bye
Norman


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to