zuoxiao
8 天以前 e0c3d16c7ba1700be99b4739b883e4d01789cc62
pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/Server.java
New file
@@ -0,0 +1,151 @@
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();
        }
    }
}