package org.jboss.seam.rest.client; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.inject.Produces; import org.apache.http.client.HttpClient; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.params.ConnManagerParams; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpParams; import org.jboss.resteasy.client.ClientExecutor; import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor; import org.jboss.solder.bean.defaultbean.DefaultBean; /** * Produces the default ClientExecutor. The default ClientExecutor can be overriden by providing an alternative instance of * ClientExecutor. * * @author <a href="http://community.jboss.org/people/jharting">Jozef Hartinger</a> */ @ApplicationScoped public class DefaultClientExecutorProducer { @Produces @DefaultBean(value = ClientExecutor.class) public ClientExecutor createExecutor() { HttpParams params = new BasicHttpParams(); ConnManagerParams.setMaxTotalConnections(params, 200); SchemeRegistry schemeRegistry = new SchemeRegistry(); schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry); HttpClient httpClient = new DefaultHttpClient(cm, params); return new ApacheHttpClient4Executor(httpClient); } }