29.2Httpclient和Spring的整合
来源:互联网 发布:淘宝客服月会总结 编辑:程序博客网 时间:2024/06/09 16:03
通过系统间的接口调用HttpClient 了解了HttpClient的工作原理。下面把该工具整合到项目中使用,项目前后端分离,前台系统要调用后台系统的接口去获取数据,client表示客户端也表明HttpClient是与前端系统做整合。
1.在前端系统的pom文件中添加HttpClient的依赖
<!-- 前后台系统http请求 --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.3.5</version> </dependency>
2.编写httpclient.properties文件
http.maxTotal=500http.defaultMaxPerRoute=100http.connectTimeout=2000http.connectionRequestTimeout=500http.socketTimeout=60000http.staleConnectionCheckEnabled=true
3.spring容器读取httpclient.properties文件:
<!-- 读取资源文件 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <!-- 允许JVM参数覆盖 --> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> <!-- 忽略没有找到的资源文件 --> <property name="ignoreResourceNotFound" value="true" /> <!-- 配置资源文件 --> <property name="locations"> <list> <value>classpath:httpclient.properties</value> </list> </property> </bean>
4.httpclient与spring容器整合,按照httpclient使用原理顺序(先创建连接池,然后打开浏览器,进行url请求,这是请求的时长等参数,清理无效连接)
<!--1.定义连接管理器 --> <bean id="httpClientConnectionManager" class="org.apache.http.impl.conn.PoolingHttpClientConnectionManager" destroy-method="close"> <!-- 设置最大连接数 --> <property name="maxTotal" value="${http.maxTotal}"/> <!-- 设置每个主机地址的并发数 --> <property name="defaultMaxPerRoute" value="${http.defaultMaxPerRoute}"/> </bean> <!--2.Httpclient构建器 --> <bean id="httpClientBuilder" class="org.apache.http.impl.client.HttpClientBuilder"> <property name="connectionManager" ref="httpClientConnectionManager"/> </bean> <!-- 定义HttpClient对象--> <!-- <!-- **该bean一定是多例的**-->**重点内容**-> <bean class="org.apache.http.impl.client.CloseableHttpClient" factory-bean="httpClientBuilder" factory-method="build" **scope="prototype"**/> <bean id="requestConfigBuilder" class="org.apache.http.client.config.RequestConfig.Builder"> <!-- 创建连接的最长时间 --> <property name="connectTimeout" value="${http.connectTimeout}"/> <!-- 从连接池中获取到连接的最长时间 --> <property name="connectionRequestTimeout" value="${http.connectionRequestTimeout}"/> <!-- 数据传输的最长时间 --> <property name="socketTimeout" value="${http.socketTimeout}"/> <!-- 提交请求前测试连接是否可用 --> <property name="staleConnectionCheckEnabled" value="${http.staleConnectionCheckEnabled}"/> </bean> <!-- 请求参数对象 --> <bean class="org.apache.http.client.config.RequestConfig" factory-bean="requestConfigBuilder" factory-method="build"/>
5.定期清理无效连接,在前端系统创建清理文件
IdleConnectionEvictor.java
package com.taotao.web.httpclient;import org.apache.http.conn.HttpClientConnectionManager;public class IdleConnectionEvictor extends Thread{ private final HttpClientConnectionManager connMgr; private volatile boolean shutdown;// 构造的时候传入一个connMgr public IdleConnectionEvictor(HttpClientConnectionManager connMgr){ this.connMgr=connMgr; this.start();//启动当前线程 } @Override public void run() { try { while (!shutdown) { synchronized (this) { wait(5000); // 关闭失效的连接 connMgr.closeExpiredConnections(); } } } catch (InterruptedException ex) { // 结束 } } public void shutdown() { shutdown = true; synchronized (this) { notifyAll(); } }}
我们要构造IdleConnectionEvictor 对象,需要把它配置到spring容器进行管理启动才能构建,构建完成后直接启动,也就是代码中this.start();//启动当前线程。所以需要把该对象的路径拷贝到整合文件中:
<!--定期清理无效连接 --> <bean class="com.taotao.web.httpclient.IdleConnectionEvictor" destroy-method="shutdown"> <constructor-arg index="0" ref="httpClientConnectionManager"></constructor-arg> </bean>
以上就是整合的具体过程,整合完成后我们就可以进行开发了http://blog.csdn.net/miss_yinghao/article/details/78602919
阅读全文
0 0
- 29.2Httpclient和Spring的整合
- Httpclient和Spring的整合
- HttpClient与Spring的整合
- HttpClient与Spring的整合
- Spring整合HttpClient
- spring整合httpClient工具类
- WebWork 和 spring 的整合
- Webwork 和 spring 的整合
- jsf和spring的整合
- hibernate和spring的整合
- dwr和spring的整合
- spring 和hibernate的整合
- struts和spring的整合
- iBatis和Spring的整合
- struts2和spring的整合
- Webwork 和spring的整合
- struts和spring的整合!
- spring和testng的整合
- Linux简介
- 开源软件简介
- Linux应用领域
- android通过webview调起支付宝app支付
- zencart添加自定义页面 about_us等等
- 29.2Httpclient和Spring的整合
- Linux与Windows的不同
- VMware简介
- Linux分区与格式化
- IPC
- android.view.InflateException: Binary XML file line #1: Error inflating class
- Tensorflow实战学习(四十五)【人工智能,深度学习,TensorFlow,比赛,公司】
- quartz时间配置
- Linux基本命令简介