tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Caron <>
Subject Re: Obtain a SocketChannel instead of OutputStream ?
Date Sun, 10 Feb 2008 22:44:49 GMT

Filip Hanik - Dev Lists wrote:
> John Caron wrote:
>> My application is a scientific data server that transfers large
>> amounts of binary data. I am looking to make it as fast as possible
>> and have been experimenting with the NIO FileChannel.transferTo()
>> method. This appears to be much faster (3-10X) than using an
>> OutputStream, under some circumstances. So I am trying to see if I can
>> use this from within Tomcat.
>> So the question is whether there is a way to obtain a SocketChannel
>> for the connection? The standard interface only allows to get an
>> OutputStream. While Channels.newChannel(OutputStream out) gives a
>> WriteableByteChannel, the transferTo() method does not work on it,
>> apparently one needs to get the SocketChannel at a deeper level.
>> Has anyone else tried this? Any ideas would be much appreciated.

> we haven't exposed the API at this level, since the data you write to
> the network, must go through several filters.
> you can still take advantage of the direct transfers by using Tomcat's
> built in send file technique.
> A user previously wrote:
> Any servlet can instruct Tomcat to perform a sendfile call by setting
> the appropriate response attributes. When using sendfile...
>    * org.apache.tomcat.sendfile.filename: Canonical filename of the file
> which will be sent as a String
>    * org.apache.tomcat.sendfile.start: Start offset as a Long
>    * org.apache.tomcat.sendfile.end: End offset as a Long
> So add these attributes into the request, (see for
> an example), and if you are using the APR or the NIO connector in
> Tomcat, tomcat will transfer them directly

Hi Filip:

I may need to make many such transfers to satisfy the request, so sendfile doesnt seem like
it will
work. I realize this would bypass the Filters. Perhaps its not worth it, but I would like
to test
the possible performance gain.

Thanks for the help....


To start a new topic, e-mail:
To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message