ClientUtil中client改为连接池方式

This commit is contained in:
zhangwei
2018-11-22 14:52:47 +08:00
parent 2d190ad7f3
commit dd835e21c1
4 changed files with 42 additions and 9 deletions

View File

@@ -17,7 +17,12 @@ import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.config.SocketConfig;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.log4j.Logger;
import org.glassfish.jersey.apache.connector.ApacheClientProperties;
import org.glassfish.jersey.apache.connector.ApacheConnectorProvider;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.ClientProperties;
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
@@ -29,6 +34,7 @@ public class ClientUtil {
private static Client client;//客户端
private static Logger logger = Logger.getLogger(ClientUtil.class);
/**
* 初始化https client
* @throws Exception
@@ -37,13 +43,24 @@ public class ClientUtil {
*/
public static void initClient(){
try{
client = ClientBuilder.newBuilder().register(ClientRequestHeaderFilter.class)//请求过滤器自动添加header信息
.register(JacksonFeature.class)//json支持
.register(MultiPartFeature.class)//文件上传支持
.property(ClientProperties.CONNECT_TIMEOUT, Constants.CLIENT_CONNECT_TIMEOUT)//连接超时时间
.property(ClientProperties.READ_TIMEOUT, Constants.CLIENT_READ_TIMEOUT)//读取超时时间
.build();
logger.info("客户端初始化成功");
if(client==null){
PoolingHttpClientConnectionManager pcm = new PoolingHttpClientConnectionManager();
pcm.setDefaultSocketConfig( SocketConfig.custom(). setSoTimeout(Constants.POOLCM_SOCKET_TIMEOUT). build());
pcm.setMaxTotal(Constants.HTTP_MAX_CONNECTION); pcm.setDefaultMaxPerRoute(Constants.DEFAULT_MAX_PERROUTE);
ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ClientProperties.CONNECT_TIMEOUT, Constants.CLIENT_CONNECT_TIMEOUT);//连接超时时间
clientConfig.property(ClientProperties.READ_TIMEOUT, Constants.CLIENT_READ_TIMEOUT);//读取超时时间
clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, pcm);
clientConfig.connectorProvider(new ApacheConnectorProvider());
clientConfig.register(JacksonFeature.class);
client = ClientBuilder.newClient(clientConfig).register(ClientRequestHeaderFilter.class)//请求过滤器自动添加header信息
.register(JacksonFeature.class)//json支持
.register(MultiPartFeature.class);//文件上传支持
logger.info("客户端初始化成功");
}
}catch (Exception e) {
logger.error("初始化客户端失败,请检查证书是否正确!",e);
System.exit(1);//程序退出
@@ -56,7 +73,9 @@ public class ClientUtil {
* @return
*/
public static WebTarget getWebTarger(String path){
initClient();
if(client==null){
initClient();
}
if(StringUtils.isNotBlank(path)){
path = formatHttpStr(path);//格式化url字符串
return client.target(path);