|  |  | 
 |  |  |  | 
 |  |  | public class TcpClUnit implements UnitInterface { | 
 |  |  |  | 
 |  |  |     private static final Logger log = LogManager.getLogger(TcpClUnit.class) ; | 
 |  |  |  | 
 |  |  |     private static TcpClUnit instance = new TcpClUnit() ; | 
 |  |  |  | 
 |  |  |     public static TcpClUnitAdapter adapter ; | 
 |  |  |     public static TcpClUnitConfigVo confVo ; | 
 |  |  |  | 
 |  |  |     public static IoSession session ; | 
 |  |  |     private static Worker worker ; | 
 |  |  |  | 
 |  |  |     private TcpClUnit(){} ; | 
 |  |  |  | 
 |  |  | 
 |  |  |         if(TcpClUnit.confVo == null){ | 
 |  |  |             throw new Exception("Tcp Client模块配置对象不能为空!") ; | 
 |  |  |         } | 
 |  |  |         TcpClUnit.worker = Worker.getInstance(TcpClUnit.confVo) ; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void start(UnitCallbackInterface callback) throws Exception { | 
 |  |  |         System.out.println("Tcp Client模块成功启动"); | 
 |  |  |         this.doStart(); | 
 |  |  |         TcpClUnit.worker.doStart(); | 
 |  |  |         callback.call(null) ; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         callback.call(null); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void doStart(){ | 
 |  |  |         new Thread(() -> { | 
 |  |  |             Exception ex ; | 
 |  |  |             while(true){ | 
 |  |  |                 ex = null ; | 
 |  |  |                 try { | 
 |  |  |                     new TcpConnect().createSession( | 
 |  |  |                             confVo.mwServerIp, | 
 |  |  |                             confVo.mwServerPort, | 
 |  |  |                             confVo.connectTimeout, | 
 |  |  |                             new TcpHandler(), | 
 |  |  |                             new Callback() { | 
 |  |  |                                 @Override | 
 |  |  |                                 public void call(Object obj) { | 
 |  |  |                                     if (obj == null) { | 
 |  |  |                                         log.error("创建网络会话返回为null"); | 
 |  |  |                                     } else { | 
 |  |  |                                         TcpClUnit.session = (IoSession) obj; | 
 |  |  |                                         log.info("成功创建与通信中间件的网络连接"); | 
 |  |  |                                         UpData.setSession(TcpClUnit.session); | 
 |  |  |                                         heartBeat() ; | 
 |  |  |                                     } | 
 |  |  |                                 } | 
 |  |  |                                 @Override | 
 |  |  |                                 public void call(Object... objs) { | 
 |  |  |                                 } | 
 |  |  |                                 @Override | 
 |  |  |                                 public void exception(Exception e) { | 
 |  |  |                                 } | 
 |  |  |                             }); | 
 |  |  |                 }catch (Exception e){ | 
 |  |  |                    ex = e ; | 
 |  |  |                 } | 
 |  |  |                 if(ex == null){ | 
 |  |  |                     break ; | 
 |  |  |                 }else{ | 
 |  |  |                     try{ | 
 |  |  |                         Thread.sleep(100); | 
 |  |  |                     }catch (Exception e){ | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }).start(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     private void heartBeat(){ | 
 |  |  |         new Thread(new Runnable(){ | 
 |  |  |             @Override | 
 |  |  |             public void run() { | 
 |  |  |                 while(true){ | 
 |  |  |                     try { | 
 |  |  |                         UpHeartBeat.upCd02Data(ServerProperties.rtuAddr); | 
 |  |  |                         Thread.sleep(30000L); | 
 |  |  |                         //Thread.sleep(30000000L); | 
 |  |  |                     }catch (Exception e){ | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }).start(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |