releaseConnection是close connection,基于连接池的认识,我们首先会想到是释放链接,至于是否close就不得而知了。近日发现线上系统出现了close wait的socket,close wait是由于被动关闭的一方没有执行socket.close()导致,由此可见我们code中存在没有正确关闭socket。
类似的code是这样的
HttpClient httpClient = newHttpClient();
GetMethod getMethod = new GetMethod();
httpclient.execute(getMethod);
>>>>省略
finally
getMethod.releaseConnection()
以上code存在一个方法体内,即每调用一次即创建一个httpclient,然后调用完毕销毁这个对象。
HttpClient默认使用SimpleHttpConnectionManager,这个connection manager维持一个connection,httpclient执行GetMethod的时候借用connection manager的connection,并标识in_use为true,而releaseConnection,只是归还并将in_use标记为false以供下次使用而不是真正的close。
结论:
1.releaseConnection不会close connection,适合的应用场景是构造一个httpclient,连续多个请求,而且并不是线程安全的。
2. 解决方案:
2.1 SimpleHttpConnectionManger的alwaysClose设置为true,这时候release就是真的close了
2.2 since3.1 增加了shutdown方法调用结束shundown  ConnectionManager
public void releaseConnection(HttpConnection conn) {
if (conn != httpConnection) {
throw new IllegalStateException("Unexpected release of an unknown connection.");
}
if (this.alwaysClose) {
httpConnection.close();
} else {
// make sure the connection is reuseable
finishLastResponse(httpConnection);
}
inUse = false;
// track the time the connection was made idle
idleStartTime = System.currentTimeMillis();
}

httpclient3.1的relaseConnection的misunderstand相关推荐

  1. httpClient3.1 笔记

    获得cookie httpClient.getState().getCookies() 设置cookie策略 client.getstate().setcookiepolicy(cookiepolic ...

  2. httpclient3.1的多线程处理

    使用多线程的主要目的,是为了实现并行的下载.在httpclient运行的过程中,每个http协议的方法,使用一个HttpConnection实 例.由于连接是一种有限的资源,每个连接在某一时刻只能供一 ...

  3. httpf发送 json_Java用HttpClient3发送http/https协议get/post请求,发送map,json,xml,txt数据...

    使用的是httpclient 3.1, 使用"httpclient"4的写法相对简单点,百度:httpclient https post 当不需要使用任何证书访问https网页时, ...

  4. httpclient3.0调用basic auth接口

    public static String httppost(String json,String url) {String username = "***";String pass ...

  5. HttpUrlConnection底层实现和关于java host绑定ip即时生效的设置及分析

    最近有个需求需要对于获取URL页面进行host绑定并且立即生效,在java里面实现可以用代理服务器来实现:因为在测试环境下可能需要通过绑定来访问测试环境的应用 实现代码如下: public stati ...

  6. 漫谈Httpclient

    引用地址: http://hc.apache.org/httpclient-3.x/ End of life The Commons HttpClient project is now end of ...

  7. Java封装OkHttp3工具类

    点击关注公众号,Java干货及时送达  作者:如漩涡 https://blog.csdn.net/m0_37701381 Java封装OkHttp3工具类,适用于Java后端开发者 说实在话,用过挺多 ...

  8. HttpClient连接池设置引发的一次雪崩

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://i7q.cn/50G6cx - 1 - 事件背 ...

  9. 恕我直言,HttpClient 你不一定会用

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://985.so/aVKE 事件背景 我在凤巢团队 ...

最新文章

  1. AI一分钟|苹果无人车可根据乘客情绪调整行车方式;快商通完成近亿元融资
  2. 腾讯云VS AWS :云存储网关性能谁更优?
  3. 必须学会的几种网络测试方法
  4. 一般项目中是如何调bug的 ------- 手把手带你体验整个流程
  5. SpringBoot+ElementUI实现通用文件下载请求(全流程图文详细教程)
  6. 【David Silver强化学习公开课】-8:Integrating Learning and Planning
  7. 工厂设计模式----python版本
  8. OC开发笔记之第二篇
  9. 从此不再惧怕URI编码:JavaScript及C# URI编码详解
  10. 江苏省高等学校计算机一级成绩查询,江苏计算机一级考试成绩查询
  11. java actionscript_ActionScript(对比Java)学习笔记二
  12. jar bat dos窗口 隐藏
  13. Linux 进程概念
  14. 国科大学习资料--机器人学导论(张正涛)--2014年期末考试试卷(含答案)
  15. 迅雷下gho文件变成php,GHO格式文件转换成WIM格式文件
  16. 2021年前端部署的灵魂拷问
  17. hive 使用beelin连接报错
  18. 计算机术语中cae,厉害了 揭秘汽车设计中CAE仿真技术
  19. 可以搜索相似网站的网站
  20. Python学习(九)Python缩进规则

热门文章

  1. 类的继承层次结构的宽度和深度
  2. 制作os x启动u盘并使用u盘安装mac系统全程图文步骤
  3. CD光盘中CDA格式转音频文件
  4. 自控力:别把赌注压在明天
  5. android+win8+双系统,Android/Win8双系统 天敏iBox睿盒D9i评测上
  6. ACM实验室成员博客汇总
  7. 【开源项目】Flutter版 玩安卓,android开发模拟器推荐
  8. 广西大学计算机考研录取名单,广西大学2020考研推免生录取名单
  9. OutLook中添加、取消送信者禁止
  10. 【观察】 2016年度中国企业级市场十大新闻