Joakim, thanks for your response.
After looking into this some more, I have noticed a few things:
1) The Jetty Proxy is actually getting an HttpServletResponseWrapper as the response, so any writing isn't actually closing the session. And the content from that call is being sent along to retrieve the Sitemesh decorator. I think that's why a call to forward() is available here after the proxy work - and the forwarded call is not actually being proxied (only the initial call is proxied)
2) The same exception occurs if I create an asynchronous servlet and try to decorate that. So I don't think this is related to the proxy specifically.
3) When retrieving a vanilla html content to decorate, everything works properly (and the HttpChannel.getCurrentHttpChannel() request returns a valid HttpChannelOverHttp object).
In reference to #2, when I try to decorate an asynchronous servlet with Sitemesh, it works in Tomcat, but doesn't work in Jetty. I certainly don't understand the differences enough to know why that would be, but I thought I'd add that in case it's a helpful tip. The reason I'd like to use Jetty is because the proxy is so fast.
Thanks.
--Matt