HttpClient连接池的使用

本文介绍了Java HttpClient 4.5中PoolingHttpClientConnectionManager的使用,讲解如何创建连接池和配置最大连接数,以及讨论了BasicClientConnectionManager的复用特性,强调了正确管理和关闭连接的重要性。
摘要由CSDN通过智能技术生成

1. HttpClient 简介

HttpClient 是Apache的一个子项目,是可以提供支持HTTP协议的Java客户端编程工具包。在实际项目的使用过程中,经常都是多线程访问,因此可能存在多个线程都需要调用HttpClient对象的情况,这类似于数据库连接,所以我们需要对连接进行池化管理,以便于提高性能。
HttpClient从4.2开始抛弃了先前的SingleClientConnManagerThreadSafeConnManger,取而代之的是BasicClientConnectionManagerPoolingClientConnectionManager,本文使用的是HttpClient 4.5 版本。

2. 编码和测试

2.1 创建PoolingHttpClientConnectionManager

PoolingHttpClientConnectionManager实现了HttpClientConnectionManager接口,顾名思义,它就是用来对连接进行池化管理的,首先创建一个对象,并在类加载时初始化它:

public class HttpClientTest {

    // 池化管理
    private static PoolingHttpClientConnectionManager poolConnManager = null;

    private static CloseableHttpClient httpClient;
    //请求器的配置
    private static RequestConfig requestConfig;

    static {

        try {
            System.out.println("初始化HttpClientTest~~~开始");
            SSLContextBuilder builder = new SSLContextBuilder();
            builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
                    builder.build());
            // 配置同时支持 HTTP 和 HTPPS
            Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create().register(
                    "http", PlainConnectionSocketFactory.getSocketFactory()).register(
                    "https", sslsf).build();
            // 初始化连接管理器
            poolConnManager = new PoolingHttpClientConnectionManager(
                    socketFactoryRegistry);
            // 将最大连接数增加到200,实际项目最好从配置文件中读取这个值
            poolConnManager.setMaxTotal(200);
            // 设置最大路由
            poolConnManager.setDefaultMaxPerRoute(2);
            // 根据默认超时限制初始化requestConfig
            int socketTimeout = 10000;
            int connectTimeout = 10000;
            int connectionRequestTimeout = 10000;
            requestConfig = RequestConfig.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值