Dan, Thanks. How embarassing.
Does the JAX-WS spec give us any leeway in offering a feature to close up these streams by magic when the service function returns? Aside, of course, from the possibility that someone wants to hang onto one. --benson On Wed, Jan 19, 2011 at 2:35 PM, Daniel Kulp <dk...@apache.org> wrote: > On Wednesday 19 January 2011 1:56:35 pm Benson Margulies wrote: >> Ian has cooked up test case for our woes with with wierd timeouts with >> MTOM. Let us know if we can help further. >> >> https://issues.apache.org/jira/browse/CXF-3259 > > The client isn't closing the streams. If you do: > > DataHandler dh = d.getContentBlob("bogusDocID", "BogusBlobID"); > dh.getInputStream().close(); > > then it runs to completion. Basically, the server has tried to send some > data back to the client. In your case, the 2048 bytes likely fits into the > socket buffer so from the server sides point of view, data was sent. However, > the HTTPUrlConnection on the client side hasn't read all the data. Thus, the > client side cannot reuse the connection and creates more connections. > Eventually, it runs out of file handles and thread pools and such. (example: > call "ulimit -n 256" first. Dies pretty fast) Also, on the server side, > the connections do look idle. All data was sent to the client, but no furthur > requests have come in (since the client cannot reuse the connection) so it > closes them. > > Basically, if you don't close streams, all hell can break lose. :-) > > -- > Daniel Kulp > dk...@apache.org > http://dankulp.com/blog >