Still working through AbstractService - I added your workflow information.
In general you did a great job of making things work again, I am sorry
to have so many questions:
1) I was just walking through your doService implementation and found a
few places where serviceResponse.abort() was not called, and where
return; was not called after sendError().
2) We missed removing the temporary File during flush(), we also need to
remove the file when something goes wrong so I added an abort method to
the interface.
3) We have also lost ability to gzip the output stream if the response
supports it.
I am not sure where we should put this back in (it used to be in
BufferedStratagy) - oh wait you recomend moving it to a Filter Servlette 
4) We catch any Throwable from the writeTo and the call sendError(
response, throwable ). I added a check to this method to see if
sendError( response, ServiceException ) should be used instead. It may
be better to explicitly catch ServiceExceptions from this method.
There is a chance that getExceptionHandler().newServiceException( t,
pre, null ) actually just returns ServiceExceptions?
If so it was not documented as something a ExceptionHandler must do, so
I decided not to leave it up to chance.
5) I could not tell if you wanted the Stratagy implementations to close
the response output stream or not? BufferedStratagy does, SpeedStratagy
does not. Further more I could not tell if this should be done in the
abort method or not.
My guess is that doService should close the response output stream, and
abort() should stick with freeing and closing its own temporary output
streams.
6) I would like to throw an exception if flush() is called before
getDestination() rather than siliently not do anything
7) Did we want to consider using a Writer, or is that too XML specific
and should be left for writeTo implementations to decide?
8) Are we expected to supply a Buffered OutputStream to writeTo()?
SpeedStratagy uses a BufferedOutputStream, FileStratagy does not?
FeatureResponse uses a buffered writer internally, When used with
SpeedStratagy we are double buffering.
I have fixed these, or added comments where I have no clue.
Can you please look things over again to make sure I did not miss anything.
Jody