That would be good as eventually the Apache HTTPClient will be nio based instead of stream based.
Though, you might want to mention to them the need to support this sort of reuse so that they take it into account in their design. :-) Take care, John On 11/11/06, Jerome Louvel <[EMAIL PROTECTED]> wrote:
Hi Sean, The current Restlet implementation creates a new HttpURLConnection instance for each request. In order to allow connection reuse, the JDK apparently requires us to reuse the exact same instance... I was expecting the JDK to internally handle reuse, too bad! In order to enable reuse in our connector, we would need to maintain a map of connection (hostUri -> HttpUrlConnection instance + state). It's just a bit hard to know when a connection has been fully used and can be put back in the pool, when to release it, etc. I think a more promising way for high-demanding services like yours it to provide a new connector based on Apache HTTP Client. I'll start looking into adding that. Other thoughts? Best regards, Jerome > -----Message d'origine----- > De : news [mailto:[EMAIL PROTECTED] De la part de Sean Landis > Envoyé : samedi 11 novembre 2006 00:26 > À : [email protected] > Objet : Re: Keeping a client connection open > > Here's a followup... > > Hi Sean, > > > > I would have expected the other behavior as the JDK keeps > HTTP connections > > alive by default. > > This appears to be the case. I tried explicitly setting > http.keepAlive to > true and http.maxConnections to say 50. Neither of these had > any effect > on performance and, using ethereal, it is clear the connection > is closed and reopened between calls using the same client. > > Here's a typical request header and body: > > POST /persons/person HTTP/1.1 > > User-Agent: Noelios-Restlet-Engine/1.0b20 > > Accept: */* > > Content-Type: text/plain > > Cache-Control: no-cache > > Pragma: no-cache > > Host: wasatch.overstock.com:8080 > > Connection: keep-alive > > Content-Length: 147 > > > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <PersonRequest xmlns="http://www.overstock.com/service1"> > <Id>20</Id> > </PersonRequest> > > And a corresponding response header and body: > > HTTP/1.1 200 OK > > Date: Fri, 10 Nov 2006 23:04:01 GMT > > Server: Noelios-Restlet-Engine/1.0b20 > > Content-Type: text/plain;charset=ISO-8859-1 > > Content-Length: 250 > > > > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <PersonResponse xmlns="http://www.overstock.com/service1"> > <Id>20</Id> > <Name>Sean</Name> > <Phone>801-555-1212</Phone> > <Time>2006-11-10T16:04:01.500-07:00</Time> > </PersonResponse> > > > So, you may want to ensure that all your request entities > (representations) > > have their "size" property precisely set. > > The Content-Length values appear to be correct. > > > Also, feel free to have a look at > > the implementation classes (just two) to see if our usage of > > HttpURLConnection could be improved. > > I couldn't see anything wrong with these and based on what I > read on the > links, I wouldn't think the issue is in the Restlet code. > > Any other suggestions welcome. > > Sean

