Hi John, Agreed. I've reopened and updated:
"HTTP client connector based on Apache HTTP client" http://restlet.tigris.org/issues/show_bug.cgi?id=13 Best regards, Jerome > -----Message d'origine----- > De : John D. Mitchell [mailto:[EMAIL PROTECTED] > Envoyé : lundi 13 novembre 2006 17:29 > À : [email protected] > Objet : Re: Keeping a client connection open > > 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 > >

