做一个给联通号段发送短信的服务,用的是中兴的jar包:com.zte.smgw.api.sgip,程序刚运行都是正常的,但是隔个几天就发不出去了,程序也不报错,检查日志,发现有大量输出“ERROR com.zte.smgw.socket.client.ClientSendThread-发送线程:链路未连接”,经过检查,发现是jar包里打印的日志,并且在jar包内部try-catch消费掉了,自己的程序都没法捕获到,问了一圈有说是一段时间没有数据量链接,服务端主动端口,但是我看了这个jar包里的方法,都没有什么检测状态、心跳保持或者重新连接的方法,想问问有没有朋友也用过这个,遇到过类似的问题,是怎么解决的?
我的线程代码结构大致是这样的:
SGIPClientInitInfo info = new SGIPClientInitInfo();
info.IP = host;
info.port = port;
info.userName = username;
info.passWord = password;
info.maxLink = maxlink;
//文档里写了SGIPClient是单例模式,且只能初始化一次,重复无效
client = SGIPClient.getInstance();
client.init(info);
while(true){
/*获取待发短信,并用client.sendSubmit方法发送*/
}