---------------------------------------------------------------------------
HARBOR: http://coolharbor.100free.com/index.htm
Now Tomcat is also a cool application server
---------------------------------------------------------------------------
----- Original Message -----
From: "Johnny Kewl" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <users@tomcat.apache.org>
Sent: Saturday, October 13, 2007 1:11 PM
Subject: Re: Copying large files around
---------------------------------------------------------------------------
HARBOR: http://coolharbor.100free.com/index.htm
Now Tomcat is also a cool application server
---------------------------------------------------------------------------
----- Original Message -----
From: "Johnny Kewl" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <users@tomcat.apache.org>; <[EMAIL PROTECTED]>
Sent: Saturday, October 13, 2007 12:41 PM
Subject: Re: Copying large files around
---------------------------------------------------------------------------
HARBOR: http://coolharbor.100free.com/index.htm
Now Tomcat is also a cool application server
---------------------------------------------------------------------------
----- Original Message -----
From: "David Kerber" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <users@tomcat.apache.org>
Sent: Saturday, October 13, 2007 4:56 AM
Subject: Copying large files around
What is the most efficient (=fastest) way of copying large (> 1GB [yes,
that's a Giga]) files around the network in java when running under
tomcat 5.5.x? Do I use a FileInputStream and FileOutputStream with a
large byte[] array? Or what?
What a cool question.... I've never had the need to move such big files
but this is what I would do...
First look at this link....
http://forum.java.sun.com/thread.jspa?threadID=226413&messageID=818728
It will give you the basic streaming model.... ie a POST on the browser
side starts sucking down the file from the servlet...
So in effect you do not have to worry about the whole file been
buffered... it will move across the wire in say 4k blocks.
OK... now if you on a LAN... thats cool, but for the internet this is not
good enough...
If you have a look at something like the Opera browser's file transfer it
does some cool things, like if you shut down the machine, next time you
start up again, it will pick up where you stopped it, it doesnt start
with the whole 1 gb file again....
In fact if I built a servlet to do this... I would run the Opera browser
download against it and stop and start and see it my servlet is to
spec...
I think the way to do it is to to modify the code in that link for RANDOM
file access... ie the client knows its got 800 MB already and only asks
for 800MB onwards.... so how do they do that.
Look at this link.....
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
and look at the byte range header spec..... I would build the servlet to
that.
With such large files.... I think the biggest problem to solve is
interruptions.... ie give the user the ability to close the client and go
home... tomorrow it starts where it left off..... I think file change
headers (almost RSS) type stuff comes into this as well, in case the file
is modified before it all downloaded, in which case it MUST start
again....
Nice question.... I'm surprized I cant find code like this on the web
already.... have a good look around.... it must be there.
You could also add compression to it... and I think GZIP is an option in
TC already, or you can just compress the blocks as they go...
If its a JPG or GIF.... dont bother with compression it already is....
nice little project
Good Luck....
AFTER-THOUGHT
You know, these TC guys are frightening clever chaps ;)
I would not be surprized at all if the DEFAULT servlet already does all
this already.
Never tried it but I would test Opera against the DEFAULT servlet (ie you
do nothing but put the file in TC.... no code)
If it works but you need to extend that to folders outside of Tomcat....
steal the DEAFULT servlet and just modify it ;)
Save you some trouble.... Yes the DEFAULT servlet already supports Etags and
File Offsets... so there you go.... Thanks Tomcat!
At most you need to make the client... or just use Opera ;)
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]