Skip to content

Commit ef2cae1

Browse files
CrazyHZMralf0131
authored andcommitted
[DUBBO-3243] Fix Invalid use of BasicClientConnManager: connection still allocated #3243 (#3581)
1 parent c528d56 commit ef2cae1

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

dubbo-rpc/dubbo-rpc-hessian/src/main/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianProtocol.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ protected <T> T doRefer(Class<T> serviceType, URL url) throws RpcException {
109109
hessianProxyFactory.setOverloadEnabled(isOverloadEnabled);
110110
String client = url.getParameter(Constants.CLIENT_KEY, Constants.DEFAULT_HTTP_CLIENT);
111111
if ("httpclient".equals(client)) {
112-
hessianProxyFactory.setConnectionFactory(new HttpClientConnectionFactory());
112+
HessianConnectionFactory factory = new HttpClientConnectionFactory();
113+
factory.setHessianProxyFactory(hessianProxyFactory);
114+
hessianProxyFactory.setConnectionFactory(factory);
113115
} else if (client != null && client.length() > 0 && !Constants.DEFAULT_HTTP_CLIENT.equals(client)) {
114116
throw new IllegalStateException("Unsupported http protocol client=\"" + client + "\"!");
115117
} else {

dubbo-rpc/dubbo-rpc-hessian/src/main/java/com/alibaba/dubbo/rpc/protocol/hessian/HttpClientConnectionFactory.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
import com.caucho.hessian.client.HessianConnectionFactory;
2323
import com.caucho.hessian.client.HessianProxyFactory;
2424
import org.apache.http.client.HttpClient;
25-
import org.apache.http.impl.client.DefaultHttpClient;
26-
import org.apache.http.params.HttpConnectionParams;
25+
import org.apache.http.client.config.RequestConfig;
26+
import org.apache.http.impl.client.HttpClientBuilder;
2727

2828
import java.io.IOException;
2929
import java.net.URL;
@@ -33,12 +33,15 @@
3333
*/
3434
public class HttpClientConnectionFactory implements HessianConnectionFactory {
3535

36-
private final HttpClient httpClient = new DefaultHttpClient();
36+
private HttpClient httpClient;
3737

3838
@Override
3939
public void setHessianProxyFactory(HessianProxyFactory factory) {
40-
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), (int) factory.getConnectTimeout());
41-
HttpConnectionParams.setSoTimeout(httpClient.getParams(), (int) factory.getReadTimeout());
40+
RequestConfig requestConfig = RequestConfig.custom()
41+
.setConnectionRequestTimeout((int) factory.getConnectTimeout())
42+
.setSocketTimeout((int) factory.getReadTimeout())
43+
.build();
44+
httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();
4245
}
4346

4447
@Override

0 commit comments

Comments
 (0)