Thanks, David; the example servlet you attached was exceedingly helpful. I applied it to 18.104.22.168 and am trying to work it into our use case.
There are a few issues to resolve. Among them, the Buffer interface assumes ints, where our use case calls for longs. We can't work around this one, unfortunately. I'm trying to add an HttpContent type that wraps RandomAccessFileBuffer (as in David's example), but letting RandomAccessFileBuffer simply implement Buffer (rather than extend AbstractBuffer), and use longs internally.
Unfortunately, simply letting this use ints doesn't work in testing, either. There's a bug that shows up on Linux, where EAGAIN in sendfile isn't handled correctly. The bug fix, like others in transferTo, may not be fixed in 1.6 (while the openjdk source seems to have resolved the specific issue I'm hitting in in solaris/native/sun/nio/ch/FileChannelImpl.c in the 6-b05 "bundle", I couldn't find a mention of this issue or a transferTo fix in any of the Java SE 6 release notes). It looks like most are fixed in JDK7. Even if we resort to blocking I/O- which would require more surgery to Jetty- it doesn't look like we can take meaningful advantage of this feature right now. I'll spend some more time with it, but this looks like it may be a dead end.
Given 6253145 (also fixed in JDK7), we'll need a workaround for large files anyway.