| New file | 
 |  |  | 
 |  |  | package com.dy.testClient; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | import com.dy.testClient.tcpClient.TcpClUnit; | 
 |  |  | import com.dy.testClient.tcpClient.TcpClUnitConfigVo; | 
 |  |  | import org.jdom2.Document; | 
 |  |  |  | 
 |  |  | import com.dy.testClient.rmiClient.RmiClUnit; | 
 |  |  | import com.dy.testClient.rmiClient.RmiClUnitConfigVo; | 
 |  |  | import com.dy.common.mw.UnitInterface; | 
 |  |  | import com.dy.common.mw.support.SupportUnit; | 
 |  |  | import com.dy.common.mw.support.SupportUnitConfigVo; | 
 |  |  | import com.dy.common.util.ConfigXmlNoSpringboot; | 
 |  |  |  | 
 |  |  | public class Server { | 
 |  |  |  | 
 |  |  |     private ConfigXmlNoSpringboot conf = null ; | 
 |  |  |     private Document doc = null ; | 
 |  |  |     private boolean showStartInfo = false ; | 
 |  |  |  | 
 |  |  |     private final List<UnitInterface> units = new ArrayList<UnitInterface>() ; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * @param args | 
 |  |  |      */ | 
 |  |  |     public static void main(String[] args) { | 
 |  |  |         Server sv = new Server(); | 
 |  |  |         Long start = System.currentTimeMillis() ; | 
 |  |  |         try { | 
 |  |  |             sv.conf = new ConfigXmlNoSpringboot() ; | 
 |  |  |             sv.doc = sv.conf.createDom(sv.getClass(), "/config.xml") ; | 
 |  |  |             //////////////// | 
 |  |  |             //服务 配置 | 
 |  |  |             sv.showStartInfo = sv.conf.getSetAttrBoolean(sv.doc, "config.server", "showStartInfo", null, null) ; | 
 |  |  |  | 
 |  |  |             sv.startUnits() ; | 
 |  |  |  | 
 |  |  |             String svName = null ; | 
 |  |  |             try{ | 
 |  |  |                 svName = sv.conf.getSetAttrTxt(sv.doc, "config.server", "name", null, false, null) ; | 
 |  |  |             }catch(Exception e){ | 
 |  |  |                 svName = "" ; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             System.out.println("OOOOOOOOOO           OOOOOOOO       OOOOOOOO") ; | 
 |  |  |             System.out.println("@@@@@@@@@@@@@@@@#O    $@@@@@@@@&    @@@@@@@@#") ; | 
 |  |  |             System.out.println("@@@@@@@@@@@@@@@@@@@#    @@@@@@@@# $@@@@@@@@&") ; | 
 |  |  |             System.out.println("@@@@@@@@@@@@@@@@@@@@@#   #@@@@@@@@@@@@@@@@O") ; | 
 |  |  |             System.out.println("@@@@@@@@@@@@@@@@@@@@@@@   &@@@@@@@@@@@@@@") ; | 
 |  |  |             System.out.println("@@@@@@$      $@@@@@@@@@&   O@@@@@@@@@@@#") ; | 
 |  |  |             System.out.println("@@@@@@$        @@@@@@@@@     @@@@@@@@@&  " + svName + "tcpTestClient " ) ; | 
 |  |  |             System.out.println("@@@@@@$        @@@@@@@@@     &@@@@@@@@") ; | 
 |  |  |             System.out.println("@@@@@@$       O@@@@@@@@@     &@@@@@@@@") ; | 
 |  |  |             System.out.println("@@@@@@$      #@@@@@@@@@$     &@@@@@@@@" ) ; | 
 |  |  |             System.out.println("@@@@@@@@@@@@@@@@@@@@@@#      &@@@@@@@@   Runing in standalone mode" ) ; | 
 |  |  |             System.out.println("@@@@@@@@@@@@@@@@@@@@@&       &@@@@@@@@   Startup in " + (System.currentTimeMillis() - start) + " MS" ) ; | 
 |  |  |             System.out.println("@@@@@@@@@@@@@@@@@@@#         &@@@@@@@@") ; | 
 |  |  |             System.out.println("@@@@@@@@@@@@@@@@#O           &@@@@@@@@") ; | 
 |  |  |  | 
 |  |  |         }catch(Exception e){ | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void startUnits(){ | 
 |  |  |         try { | 
 |  |  |             //////////////////////////////////////////////////////// | 
 |  |  |             //支持模块: springHibernate和 线程池 | 
 |  |  |             SupportUnitConfigVo supVo = new SupportUnitConfigVo() ; | 
 |  |  |             //短工作时长线程池,线程负责用时较短的工作任务 | 
 |  |  |             supVo.short_maxThread = conf.getSetAttrPlusInt(doc, "config.support", "short_maxThread", null, -1, 1000, null) ;//池中最大线程数为所有CPU核数+1 | 
 |  |  |             if(supVo.short_maxThread < 0){ | 
 |  |  |                 supVo.short_maxThread = -1 ; | 
 |  |  |             } | 
 |  |  |             supVo.short_minThread = conf.getSetAttrPlusInt(doc, "config.support", "short_minThread", null, -1, 100, null) ;//池中最小线程数 | 
 |  |  |             if(supVo.short_minThread < 0){ | 
 |  |  |                 supVo.short_minThread = -1 ; | 
 |  |  |             } | 
 |  |  |             supVo.short_freeTimeout = conf.getSetAttrPlusInt(doc, "config.support", "short_freeTimeout", null, 1, 90, null) * 1000 ;//线程数空闲时长,若池中线程数量大于minThread,且有的线程空闲时长超过freeTimeout,则清除该线程,为了不清除,把minThread与maxThread设置相等 | 
 |  |  |             supVo.short_busyTimeout = conf.getSetAttrPlusInt(doc, "config.support", "short_busyTimeout", null, 1, 10, null) * 1000 ;//线程不间断工作时长(单位为秒)超时限,认为线程已经了崩溃,将强制清除,短工作时长设置为5秒 | 
 |  |  |             if(supVo.short_maxThread == 0 || supVo.short_minThread == 0){ | 
 |  |  |                 supVo.enableShortThreadPool = false ; | 
 |  |  |             }else{ | 
 |  |  |                 supVo.enableShortThreadPool = true ; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             //长工作时长线程池,线程负责用时较长的工作任务 | 
 |  |  |             supVo.long_maxThread = conf.getSetAttrInt(doc, "config.support", "long_maxThread", null, -1, 1000, null)  ;//池中最大线程数,若为-1,不受限制 | 
 |  |  |             if(supVo.long_maxThread < 0){ | 
 |  |  |                 supVo.long_maxThread = -1 ; | 
 |  |  |             } | 
 |  |  |             supVo.long_minThread = conf.getSetAttrPlusInt(doc, "config.support", "long_minThread", null, -1, 100, null) ;//池中最小线程数 | 
 |  |  |             if(supVo.long_minThread < 0){ | 
 |  |  |                 supVo.long_minThread = -1 ; | 
 |  |  |             } | 
 |  |  |             supVo.long_freeTimeout = conf.getSetAttrPlusInt(doc, "config.support", "long_freeTimeout", null, 1, 90, null) * 1000 ;//线程数空闲时长,若池中线程数量大于minThread,且有的线程空闲时长超过freeTimeout,则清除该线程 | 
 |  |  |             supVo.long_busyTimeout = conf.getSetAttrInt(doc, "config.support", "long_busyTimeout", null, -1, 10, null) ;//线程不间断工作时长(单位为秒)超时限,若为-1,不受限制 | 
 |  |  |             if(supVo.long_busyTimeout < 0){ | 
 |  |  |                 supVo.long_busyTimeout = -1 ; | 
 |  |  |             } | 
 |  |  |             if(supVo.long_maxThread == 0 || supVo.long_minThread == 0){ | 
 |  |  |                 supVo.enableLongThreadPool = false ; | 
 |  |  |             }else{ | 
 |  |  |                 supVo.enableLongThreadPool = true ; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             supVo.showStartInfo = showStartInfo ; | 
 |  |  |  | 
 |  |  |             AdapterImp_SupportUnit supAdap = new AdapterImp_SupportUnit() ; | 
 |  |  |             supAdap.setConfig(supVo); | 
 |  |  |             SupportUnit supUnit = SupportUnit.getInstance() ; | 
 |  |  |             supUnit.setAdapter(supAdap); | 
 |  |  |             supUnit.start(obj -> { | 
 |  |  |             }); | 
 |  |  |             units.add(supUnit) ; | 
 |  |  |  | 
 |  |  |             // /////////////// | 
 |  |  |             // rmi 模块 | 
 |  |  |             RmiClUnitConfigVo rmiClVo = new RmiClUnitConfigVo(); | 
 |  |  |             rmiClVo.svUrl = conf.getSetAttrTxt(doc, "config.rmiCl", "rmiSvUrl", null, false, null) ; | 
 |  |  |             rmiClVo.svContext = conf.getSetAttrTxt(doc, "config.rmiCl", "rmiSvContext", null, false, null) ; | 
 |  |  |             rmiClVo.svPort = conf.getSetAttrPlusInt(doc, "config.rmiCl", "rmiSvPort", null, 0, 65535, null) ; | 
 |  |  |             AdapterImp_RmiClUnit rmiClAdap = new AdapterImp_RmiClUnit(); | 
 |  |  |             rmiClAdap.setConfig(rmiClVo); | 
 |  |  |             RmiClUnit rmiClUnit = RmiClUnit.getInstance(); | 
 |  |  |             rmiClUnit.setAdapter(rmiClAdap); | 
 |  |  |             rmiClUnit.start(obj -> { | 
 |  |  |             }); | 
 |  |  |             units.add(rmiClUnit) ; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             // /////////////// | 
 |  |  |             // Tcp Client 模块 | 
 |  |  |             TcpClUnitConfigVo tcpClVo = new TcpClUnitConfigVo(); | 
 |  |  |             tcpClVo.enable = conf.getSetAttrBoolean(doc, "config.tcpCl", "enable", null, null) ; | 
 |  |  |             if(tcpClVo.enable){ | 
 |  |  |                 AdapterImp_TcpClUnit httpClAdap = new AdapterImp_TcpClUnit(); | 
 |  |  |                 httpClAdap.setConfig(tcpClVo); | 
 |  |  |                 TcpClUnit httpClUnit = TcpClUnit.getInstance(); | 
 |  |  |                 httpClUnit.setAdapter(httpClAdap); | 
 |  |  |                 httpClUnit.start(obj -> { | 
 |  |  |                 }); | 
 |  |  |                 units.add(httpClUnit) ; | 
 |  |  |             } | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } | 
 |  |  |  |