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
> >

Reply via email to