CodeService/src/main/java/com/java110/code/CodeServiceApplicationStart.java
@@ -14,9 +14,12 @@
import com.java110.service.init.ServiceStartInit;
import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ApplicationContext;
import java.net.InetAddress;
@@ -32,16 +35,18 @@
 * @date 2016年8月6日
 * @tag
 */
@SpringBootApplication(scanBasePackages = {"com.java110.service","com.java110.code","com.java110.core","com.java110.cache",
"com.java110.config.properties.code"})
@SpringBootApplication(scanBasePackages = {"com.java110.service", "com.java110.code", "com.java110.core", "com.java110.cache",
        "com.java110.config.properties.code", "com.java110.db"})
//@SpringBootApplication(scanBasePackages = {"com.java110.service","com.java110.code","com.java110.config.properties.code"})
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.java110.core.smo"})
public class CodeServiceApplicationStart {
    protected final static Logger logger = LoggerFactory.getLogger(CodeServiceApplicationStart.class);
    public static void main(String[] args) throws Exception {
        ApplicationContext context =  SpringApplication.run(CodeServiceApplicationStart.class, args);
        ApplicationContext context = SpringApplication.run(CodeServiceApplicationStart.class, args);
        ServiceStartInit.initSystemConfig(context);
@@ -54,24 +59,24 @@
    /**
     * 加载 workId
     */
    public static void loadWorkId() throws StartException{
        ZookeeperProperties zookeeperProperties =  ApplicationContextFactory.getBean("zookeeperProperties",ZookeeperProperties.class);
    public static void loadWorkId() throws StartException {
        ZookeeperProperties zookeeperProperties = ApplicationContextFactory.getBean("zookeeperProperties", ZookeeperProperties.class);
        if(zookeeperProperties == null){
            throw new StartException(ResponseConstant.RESULT_CODE_ERROR,"系统启动失败,未加载zookeeper 配置信息");
        if (zookeeperProperties == null) {
            throw new StartException(ResponseConstant.RESULT_CODE_ERROR, "系统启动失败,未加载zookeeper 配置信息");
        }
        String host = null;
        try {
            host = InetAddress.getLocalHost().getHostAddress();
        } catch (UnknownHostException e) {
            throw new StartException(ResponseConstant.RESULT_CODE_ERROR,"系统启动失败,获取host失败"+e);
            throw new StartException(ResponseConstant.RESULT_CODE_ERROR, "系统启动失败,获取host失败" + e);
        }
        ServiceInfoListener serviceInfoListener =  ApplicationContextFactory.getBean("serviceInfoListener",ServiceInfoListener.class);
        ServiceInfoListener serviceInfoListener = ApplicationContextFactory.getBean("serviceInfoListener", ServiceInfoListener.class);
        if(serviceInfoListener == null){
            throw new StartException(ResponseConstant.RESULT_CODE_ERROR,"系统启动失败,获取服务监听端口失败");
        if (serviceInfoListener == null) {
            throw new StartException(ResponseConstant.RESULT_CODE_ERROR, "系统启动失败,获取服务监听端口失败");
        }
        serviceInfoListener.setServiceHost(host);
@@ -86,45 +91,41 @@
            });
            Stat stat = zooKeeper.exists(zookeeperProperties.getWorkDir(), true);
            Stat stat = zooKeeper.exists(zookeeperProperties.getWorkDir(),true);
            if(stat == null){
            if (stat == null) {
                zooKeeper.create(zookeeperProperties.getWorkDir(), "".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,
                        CreateMode.PERSISTENT);
            }
            String workDir = "";
            List<String> workDirs = zooKeeper.getChildren(zookeeperProperties.getWorkDir(),true);
            List<String> workDirs = zooKeeper.getChildren(zookeeperProperties.getWorkDir(), true);
            if(workDirs != null && workDirs.size() > 0) {
                for(String workDirTemp : workDirs){
                    if(workDirTemp.startsWith(serviceInfoListener.getHostPort())){
            if (workDirs != null && workDirs.size() > 0) {
                for (String workDirTemp : workDirs) {
                    if (workDirTemp.startsWith(serviceInfoListener.getHostPort())) {
                        workDir = workDirTemp;
                        break;
                    }
                }
            }
            if(StringUtil.isNullOrNone(workDir)) {
            if (StringUtil.isNullOrNone(workDir)) {
                workDir = zooKeeper.create(zookeeperProperties.getWorkDir() + "/" + serviceInfoListener.getHostPort(), "".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,
                        CreateMode.PERSISTENT_SEQUENTIAL);
            }
            String[] pathTokens = workDir.split("/");
            if (  pathTokens.length > 0
                    && pathTokens[pathTokens.length -1].contains("-")
                    && pathTokens[pathTokens.length -1].contains(":"))
            {
                String workId = pathTokens[pathTokens.length -1].substring(pathTokens[pathTokens.length -1].indexOf("-")+1);
            if (pathTokens.length > 0
                    && pathTokens[pathTokens.length - 1].contains("-")
                    && pathTokens[pathTokens.length - 1].contains(":")) {
                String workId = pathTokens[pathTokens.length - 1].substring(pathTokens[pathTokens.length - 1].indexOf("-") + 1);
                serviceInfoListener.setWorkId(Long.parseLong(workId));
            }
            Assert.hasLength(serviceInfoListener.getWorkId()+"","系统中加载workId 失败");
        }catch (Exception e){
            Assert.hasLength(serviceInfoListener.getWorkId() + "", "系统中加载workId 失败");
        } catch (Exception e) {
            e.printStackTrace();
            throw new StartException(ResponseConstant.RESULT_CODE_ERROR,"系统启动失败,链接zookeeper失败"+zookeeperProperties.getZookeeperConnectString());
            throw new StartException(ResponseConstant.RESULT_CODE_ERROR, "系统启动失败,链接zookeeper失败" + zookeeperProperties.getZookeeperConnectString());
        }
    }