场景:公司用java客户端和C#服务端实现hessian通信,但是如果数据过大会存在客户端连接超时情况。
hessian4.0以及之后版本在HessianProxyFactory中提供了setConnectionTimeout方法来设置超时时间。之前版本没有提供,可以这样解决:
public class MyHessianProxyFactory extends HessianProxyFactory {
private int connectTimeOut = 10000;
private int readTimeOut = 10000;
public int getConnectTimeOut() {
return connectTimeOut;
}
public void setConnectTimeOut(int connectTimeOut) {
this.connectTimeOut = connectTimeOut;
}
public int getReadTimeOut() {
return readTimeOut;
}
public void setReadTimeOut(int readTimeOut) {
this.readTimeOut = readTimeOut;
}
@Override
protected URLConnection openConnection(URL url) throws IOException {
URLConnection conn = super.openConnection(url);
if (this.connectTimeOut > 0) {
conn.setConnectTimeout(this.connectTimeOut);
}
return conn;
}
}
写一个自己的工厂类继承HessianProxyFactory,重写openConnection方法,在此之中设置超时时间。