今天看啥
    热点:

      天发国际娱乐官网:  据悉,本次活动主要有四项内容:一是举办城市联合网络招聘大会。

      使用PoolingHttpClientConnectionManager解决友盟(umeng)推送在多线程环境推送失败的问题,


      在友盟(umeng)提供的服务端推送的sdk中,使用的是apache提供的httpclient。在单线程化境下,httpclient工作没有问题。但是由于umeng的sdk中并未考虑并发的情况,因此很有可能你会收到这样的error:

      java.lang.IllegalStateException: Invalid use of BasicClientConnManager: connection still allocated.
      Make sure to release the connection before allocating another one.

       

      在apache提供的httpclient类库中,其实已经提供了对线程池管理的类,比如PoolingHttpClientConnectionManager:

      修改umeng sdk中的PushClient.java:

      1.由于默认的HttpClient(4.3.5)构造函数已经过期,可以使用下面的方式重新声明:

      protected HttpClient client = HttpClients.custom().build();

       

      2. 增加一个PushClient的构造函数:

      public PushClient() {

      ConnectionSocketFactory plainsf = PlainConnectionSocketFactory
      .getSocketFactory();
      LayeredConnectionSocketFactory sslsf = SSLConnectionSocketFactory
      .getSocketFactory();
      Registry<ConnectionSocketFactory> registry = RegistryBuilder
      .<ConnectionSocketFactory>create().register("http", plainsf)
      .register("https", sslsf).build();
      PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(
      registry);
      // 将最大连接数增加
      cm.setMaxTotal(20);
      // 将每个路由基础的连接增加
      cm.setDefaultMaxPerRoute(20);

      client = HttpClients.custom()
      .setConnectionManager(cm).build();
      }

      完成。

       

      www.1click-soft.comtruehttp://www.1click-soft.com/Javabc/1284152.htmlTechArticle使用PoolingHttpClientConnectionManager解决友盟(umeng)推送在多线程环境推送失败的问题, 在友盟(umeng)提供的服务端推送的sdk中,使用的是apache提供...

      相关文章

        暂无相关文章
      相关搜索:

      帮客评论

      视觉看点
      百度 360 搜狗