Je suis sur Scala 2.10.2 et que vous souhaitez mettre en œuvre un fournisseur de http threadsafe utilisant Apache http client 4.2.5, voici ce que je l'ai faitApache http client threadsafe
import net.liftweb.json._
import net.liftweb.json.JsonDSL._
import scala.concurrent.Future
object AsyncHttpProvider {
import org.apache.http.client._
import org.apache.http.client.methods._
import org.apache.http.impl.client._
val httpclient = new DefaultHttpClient
private def get(query: String) = {
val httpget = new HttpGet(query)
val brh = new BasicResponseHandler
httpclient.execute(httpget, brh)
}
def getResponseBodyAsJValue(query: String): Future[JValue] = Future(parse(get(query)))
def getResponseBodyAsJsonString(query: String): Future[String] = Future(get(query))
}
Depuis que je suis en utilisant Future
, Je veux m'assurer que le code est thread-safe, n'est-ce pas?
Bon point sur ne pas avoir besoin de recréer la 'DefaultHttpClient' intérieur 'get', j'ai reflété le changement dans ma question. Donc, il semble que ce soit thread-safe maintenant. – Bob
Comme il s'avère que ce n'est pas ce que je pensais, avec chaque connexion client, je dois consommer le corps de la réponse avant de pouvoir réutiliser la connexion pour une autre requête, donc mon code d'origine jusqu'à ce que j'applique de la mise en commun. – Bob