diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpParams.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpParams.java
index 6ad51e01..83d8ccb2 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpParams.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpParams.java
@@ -17,11 +17,19 @@ public final class HttpParams {
/**
* 连接超时时间(单位毫秒)
*/
- private int connectTimeout;
+ private final int connectTimeout;
/**
* 读取超时时间(单位毫秒)
*/
- private int readTimeout;
+ private final int readTimeout;
+ /**
+ * 最大连接数
+ */
+ private final int maxConnections;
+ /**
+ * 每个host最大连接数
+ */
+ private final int maxConnectionsPerHost;
/**
* 代理对象
*/
@@ -36,15 +44,17 @@ public final class HttpParams {
private HostnameVerifier hostnameVerifier;
/**
- * connectTimeout = 15000,readTimeout=20000
+ * connectTimeout = 15000,readTimeout=20000,maxConnection=100,maxConnectionPerHost=32
*/
public HttpParams() {
- this(5000, 15000);
+ this(5000, 15000,100,32);
}
- public HttpParams(int connectTimeout, int readTimeout) {
+ public HttpParams(int connectTimeout, int readTimeout,int maxConnections,int maxConnectionsPerHost) {
this.connectTimeout = connectTimeout;
this.readTimeout = readTimeout;
+ this.maxConnections = maxConnections;
+ this.maxConnectionsPerHost = maxConnectionsPerHost;
}
public int getConnectTimeout() {
@@ -55,6 +65,14 @@ public final class HttpParams {
return readTimeout;
}
+ public int getMaxConnections() {
+ return maxConnections;
+ }
+
+ public int getMaxConnectionsPerHost() {
+ return maxConnectionsPerHost;
+ }
+
public Proxy getProxy() {
return proxy;
}
@@ -84,7 +102,7 @@ public final class HttpParams {
public static HttpParams copy(final HttpParams params) {
return new HttpParams(params.getConnectTimeout(),
- params.getReadTimeout()).setProxy(params.getProxy())
+ params.getReadTimeout(),params.getMaxConnections(),params.getMaxConnectionsPerHost()).setProxy(params.getProxy())
.setHostnameVerifier(params.getHostnameVerifier())
.setSSLContext(params.getSSLContext());
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Factory.java
index d34ad624..cf4e62c6 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Factory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache3/HttpComponent3Factory.java
@@ -5,6 +5,7 @@ import java.net.InetSocketAddress;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpConnectionManager;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.commons.httpclient.protocol.Protocol;
import com.foxinmy.weixin4j.http.HttpParams;
@@ -62,8 +63,10 @@ public class HttpComponent3Factory extends HttpClientFactory {
new SSLProtocolSocketFactory(params.getSSLContext()),
443));
}
- httpClient.getHttpConnectionManager().getParams()
- .setConnectionTimeout(params.getConnectTimeout());
+ HttpConnectionManagerParams params_ = httpClient.getHttpConnectionManager().getParams();
+ params_.setMaxTotalConnections(params.getMaxConnections());
+ params_.setDefaultMaxConnectionsPerHost(params.getMaxConnectionsPerHost());
+ params_.setConnectionTimeout(params.getConnectTimeout());
}
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_1Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_1Factory.java
index bad711bd..2cd4b4c9 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_1Factory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_1Factory.java
@@ -40,14 +40,9 @@ public class HttpComponent4_1Factory extends HttpClientFactory {
*
* @see HTTPCLIENT-1193
- * @param clientConnectionManager
*/
public HttpComponent4_1Factory() {
- PoolingClientConnectionManager clientConnectionManager = new PoolingClientConnectionManager();
- clientConnectionManager.setMaxTotal(30);
- clientConnectionManager.setDefaultMaxPerRoute(clientConnectionManager
- .getMaxTotal());
- httpClient = new DefaultHttpClient(clientConnectionManager);
+ httpClient = new DefaultHttpClient(new PoolingClientConnectionManager());
httpClient.getParams().setParameter(
CoreProtocolPNames.HTTP_CONTENT_CHARSET, Consts.UTF_8);
httpClient.getParams().setParameter(
@@ -110,6 +105,11 @@ public class HttpComponent4_1Factory extends HttpClientFactory {
httpClient.getConnectionManager().getSchemeRegistry()
.register(scheme);
}
+ ClientConnectionManager connectionManager = httpClient.getConnectionManager();
+ if(connectionManager instanceof PoolingClientConnectionManager){
+ ((PoolingClientConnectionManager) connectionManager).setMaxTotal(params.getMaxConnections());
+ ((PoolingClientConnectionManager) connectionManager).setDefaultMaxPerRoute(params.getMaxConnectionsPerHost());
+ }
}
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_2Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_2Factory.java
index d313df63..091487bf 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_2Factory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/apache4/HttpComponent4_2Factory.java
@@ -99,6 +99,8 @@ public class HttpComponent4_2Factory extends HttpClientFactory {
clientBuilder.setHostnameVerifier(new CustomHostnameVerifier(
params.getHostnameVerifier()));
}
+ clientBuilder.setMaxConnTotal(params.getMaxConnections());
+ clientBuilder.setMaxConnPerRoute(params.getMaxConnectionsPerHost());
}
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient2Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient2Factory.java
index 9493c493..55c8a7ae 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient2Factory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient2Factory.java
@@ -50,6 +50,8 @@ public class OkHttpClient2Factory extends HttpClientFactory {
if (params.getHostnameVerifier() != null) {
okClient.setHostnameVerifier(params.getHostnameVerifier());
}
+ okClient.getDispatcher().setMaxRequests(params.getMaxConnections());
+ okClient.getDispatcher().setMaxRequestsPerHost(params.getMaxConnectionsPerHost());
}
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient3Factory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient3Factory.java
index c54fd334..499a4aa1 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient3Factory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/support/okhttp/OkHttpClient3Factory.java
@@ -60,6 +60,10 @@ public class OkHttpClient3Factory extends HttpClientFactory {
if (params.getHostnameVerifier() != null) {
clientBuilder.hostnameVerifier(params.getHostnameVerifier());
}
+ Dispatcher dispatcher = new Dispatcher();
+ dispatcher.setMaxRequests(params.getMaxConnections());
+ dispatcher.setMaxRequestsPerHost(params.getMaxConnectionsPerHost());
+ clientBuilder.dispatcher(dispatcher);
}
}
diff --git a/weixin4j-server/pom.xml b/weixin4j-server/pom.xml
index b67857f1..5eaa9b8e 100644
--- a/weixin4j-server/pom.xml
+++ b/weixin4j-server/pom.xml
@@ -1,5 +1,6 @@
-
4.0.0
@@ -15,7 +16,7 @@
io.netty
- netty-all
+ netty-codec-http
4.1.42.Final
@@ -33,26 +34,10 @@
junit
junit
-
- org.apache.httpcomponents
- httpcore
- 4.2.5
- test
-
org.apache.httpcomponents
httpclient
- 4.3.6
-
-
- commons-codec
- commons-codec
-
-
- org.apache.httpcomponents
- httpcore
-
-
+ 4.2
test
@@ -60,6 +45,12 @@
spring-context
4.2.0.RELEASE
true
+
+
+ commons-logging
+ commons-logging
+
+
\ No newline at end of file
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java
index 0521d062..69ffd922 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/ClassUtil.java
@@ -61,7 +61,7 @@ public final class ClassUtil {
}
}
if (clazz == null || clazz.isEmpty()) {
- clazz = new ArrayList<>();
+ clazz = new ArrayList>();
try {
for (URL url : ((URLClassLoader) ClassLoader.getSystemClassLoader()).getURLs()) {
File file = new File(url.getFile());
diff --git a/weixin4j-server/src/test/java/com/foxinmy/weixin4j/server/test/MessagePush.java b/weixin4j-server/src/test/java/com/foxinmy/weixin4j/server/test/MessagePush.java
index 26aa38be..30fc2ac2 100644
--- a/weixin4j-server/src/test/java/com/foxinmy/weixin4j/server/test/MessagePush.java
+++ b/weixin4j-server/src/test/java/com/foxinmy/weixin4j/server/test/MessagePush.java
@@ -27,7 +27,7 @@ import com.foxinmy.weixin4j.util.ServerToolkits;
*/
public class MessagePush {
- private final String server = "https://localhost:30000";
+ private final String server = "http://localhost:30000";
private final HttpClient httpClient;
private final HttpPost httpPost;
private final HttpGet httpGet;