1

package cn.com.atis.evo.web;



import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Embedded;





public class WebServer implements Runnable {

  private Embedded emTomcat = null;

  public WebServer(){
    //实例化Embedded
    emTomcat = new Embedded();
  }


  /**
   * 关闭服务
   * @throws Exception
   */
  public void stopTomcat() {
    try {
      emTomcat.stop();
      emTomcat=null;
      System.gc();
    }
    catch (Exception ex) {
        ex.printStackTrace();
    }

  }

public void run() {
    WebConfig config = WebConfig.getInstance();

        System.setProperty("catalina.home", config.getWebHomePath());
        System.setProperty("catalina.base", config.getWebHomePath());
        // 设置Debug的级别
        
        //emTomcat.setDebug(256);
        

        // 建立Engine及设置属性
        Engine engine = emTomcat.createEngine();
        engine.setName("server_engine");
        //设置引擎的默认Host
        engine.setDefaultHost("localhost");

        //建立Host
        //param1:Host的名字
        //param2:应用程序的基本路径
        Host host = emTomcat.createHost(config.getWebServerAddress(), config.getWebAppBasePath());
        //将Host与Engine关联
        engine.addChild(host);

        //建立应用程序环境
        //param1:ContextPath
        //param2:web app在“appBase”下的路径
        Context appCtx = emTomcat.createContext("","evo");
                                               // config.getWebDocBasePath());

//        //设置重新启动是不保留session
//        PersistentManager pmBase = new PersistentManager();
//        pmBase.setSaveOnRestart(false);
//        //将PersistentManager与Context关联
//        appCtx.setManager(pmBase);
        
 
        
        
        //在GetIdentification中设置sessionTimeOut
        //appCtx.setSessionTimeout(sessionTimeOut);//分钟
        //将Context与Host关联
//        host.addChild(appCtx);
        host.addChild(appCtx);

//        Context appCtx2 = emTomcat.createContext("ROOT","ROOT");
        //Context appCtx3 = emTomcat.createContext("1","manager");
//        host.addChild(appCtx2);
       // host.addChild(appCtx3);
        
        //将Engine与emTomcat关联
        emTomcat.addEngine(engine);

        //建立 Connector(HTTP)
        //param1:connector绑定的IP,如果为NULL,则假设绑定到这个Server的所有IP
        //param2:端口
        //param3:是否支持SSL
        Connector connector = null;
        //非安全
        if (config.getWebType().equalsIgnoreCase(WebConfig.WEBTYPE_GENERAL)) {
          connector = emTomcat.createConnector( (java.net.InetAddress)null,
                                               config.getWebServerPort(), false);
        }
        //安全单向认证
        else {
//          connector = emTomcat.createConnector( (java.net.InetAddress)null,
//                  config.getWebServerPort(),true);
//          //建立CoyoteServerSocketFactory
//          CoyoteServerSocketFactory ssf = new CoyoteServerSocketFactory();
//          ssf.setProtocol(config.getWebProtocol());
//          ssf.setAlgorithm(KeyManagerFactory.getDefaultAlgorithm());
//          //设置keyStore和口令
//          ssf.setKeystoreFile(config.getCommunicateCert());
//          ssf.setKeystorePass(config.getCommunicateCertPWD());
//          //客户端认证
//          if(config.getWebType().equalsIgnoreCase(WebConfig.WEBTYPE_BIDIRECTIONAL))
//          {
//            ssf.setClientAuth("false");
//          } else
//          {
//            ssf.setClientAuth("true");
//          }
//          //与Factory关联
//          connector.setFactory(ssf);
        }
        //将Connector与emTomcat关联
        emTomcat.addConnector(connector);

        //启动Embedded Tomcat
        try {
         emTomcat.start();
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
    
}



}

你可能感兴趣的:(tomcat,exception,manager,server,ssl,null)