This is an automated email from the ASF dual-hosted git repository.

lizhanhui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new 48476ae  Standardize the startup class structure (#243)
48476ae is described below

commit 48476ae587fa91f04eacf7486b6c7cf4bb988977
Author: Zhanhui Li <lizhan...@apache.org>
AuthorDate: Sun Apr 8 16:33:45 2018 +0800

    Standardize the startup class structure (#243)
---
 .../org/apache/rocketmq/broker/BrokerStartup.java  |   6 +
 .../apache/rocketmq/namesrv/NamesrvStartup.java    | 162 ++++++++++++---------
 2 files changed, 99 insertions(+), 69 deletions(-)

diff --git a/broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java 
b/broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java
index 7627bb9..f0a1150 100644
--- a/broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java
+++ b/broker/src/main/java/org/apache/rocketmq/broker/BrokerStartup.java
@@ -79,6 +79,12 @@ public class BrokerStartup {
         return null;
     }
 
+    public static void shutdown(final BrokerController controller) {
+        if (null != controller) {
+            controller.shutdown();
+        }
+    }
+
     public static BrokerController createBrokerController(String[] args) {
         System.setProperty(RemotingCommand.REMOTING_VERSION_KEY, 
Integer.toString(MQVersion.CURRENT_VERSION));
 
diff --git 
a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java 
b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java
index a55735a..a073daf 100644
--- a/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java
+++ b/namesrv/src/main/java/org/apache/rocketmq/namesrv/NamesrvStartup.java
@@ -18,8 +18,10 @@ package org.apache.rocketmq.namesrv;
 
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.joran.JoranConfigurator;
+import ch.qos.logback.core.joran.spi.JoranException;
 import java.io.BufferedInputStream;
 import java.io.FileInputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.Properties;
 import java.util.concurrent.Callable;
@@ -40,99 +42,121 @@ import org.apache.rocketmq.srvutil.ShutdownHookThread;
 import org.slf4j.LoggerFactory;
 
 public class NamesrvStartup {
-    public static Properties properties = null;
-    public static CommandLine commandLine = null;
+
+    private static InternalLogger log;
+    private static Properties properties = null;
+    private static CommandLine commandLine = null;
 
     public static void main(String[] args) {
         main0(args);
     }
 
     public static NamesrvController main0(String[] args) {
-        System.setProperty(RemotingCommand.REMOTING_VERSION_KEY, 
Integer.toString(MQVersion.CURRENT_VERSION));
+
         try {
-            //PackageConflictDetect.detectFastjson();
+            NamesrvController controller = createNamesrvController(args);
+            start(controller);
+            String tip = "The Name Server boot success. serializeType=" + 
RemotingCommand.getSerializeTypeConfigInThisServer();
+            log.info(tip);
+            System.out.printf("%s%n", tip);
+            return controller;
+        } catch (Throwable e) {
+            e.printStackTrace();
+            System.exit(-1);
+        }
 
-            Options options = ServerUtil.buildCommandlineOptions(new 
Options());
-            commandLine = ServerUtil.parseCmdLine("mqnamesrv", args, 
buildCommandlineOptions(options), new PosixParser());
-            if (null == commandLine) {
-                System.exit(-1);
-                return null;
-            }
+        return null;
+    }
 
-            final NamesrvConfig namesrvConfig = new NamesrvConfig();
-            final NettyServerConfig nettyServerConfig = new 
NettyServerConfig();
-            nettyServerConfig.setListenPort(9876);
-            if (commandLine.hasOption('c')) {
-                String file = commandLine.getOptionValue('c');
-                if (file != null) {
-                    InputStream in = new BufferedInputStream(new 
FileInputStream(file));
-                    properties = new Properties();
-                    properties.load(in);
-                    MixAll.properties2Object(properties, namesrvConfig);
-                    MixAll.properties2Object(properties, nettyServerConfig);
-
-                    namesrvConfig.setConfigStorePath(file);
-
-                    System.out.printf("load config properties file OK, %s%n", 
file);
-                    in.close();
-                }
-            }
+    public static NamesrvController createNamesrvController(String[] args) 
throws IOException, JoranException {
+        System.setProperty(RemotingCommand.REMOTING_VERSION_KEY, 
Integer.toString(MQVersion.CURRENT_VERSION));
+        //PackageConflictDetect.detectFastjson();
 
-            if (commandLine.hasOption('p')) {
-                MixAll.printObjectProperties(null, namesrvConfig);
-                MixAll.printObjectProperties(null, nettyServerConfig);
-                System.exit(0);
+        Options options = ServerUtil.buildCommandlineOptions(new Options());
+        commandLine = ServerUtil.parseCmdLine("mqnamesrv", args, 
buildCommandlineOptions(options), new PosixParser());
+        if (null == commandLine) {
+            System.exit(-1);
+            return null;
+        }
+
+        final NamesrvConfig namesrvConfig = new NamesrvConfig();
+        final NettyServerConfig nettyServerConfig = new NettyServerConfig();
+        nettyServerConfig.setListenPort(9876);
+        if (commandLine.hasOption('c')) {
+            String file = commandLine.getOptionValue('c');
+            if (file != null) {
+                InputStream in = new BufferedInputStream(new 
FileInputStream(file));
+                properties = new Properties();
+                properties.load(in);
+                MixAll.properties2Object(properties, namesrvConfig);
+                MixAll.properties2Object(properties, nettyServerConfig);
+
+                namesrvConfig.setConfigStorePath(file);
+
+                System.out.printf("load config properties file OK, %s%n", 
file);
+                in.close();
             }
+        }
+
+        if (commandLine.hasOption('p')) {
+            MixAll.printObjectProperties(null, namesrvConfig);
+            MixAll.printObjectProperties(null, nettyServerConfig);
+            System.exit(0);
+        }
 
-            
MixAll.properties2Object(ServerUtil.commandLine2Properties(commandLine), 
namesrvConfig);
+        
MixAll.properties2Object(ServerUtil.commandLine2Properties(commandLine), 
namesrvConfig);
 
-            if (null == namesrvConfig.getRocketmqHome()) {
-                System.out.printf("Please set the %s variable in your 
environment to match the location of the RocketMQ installation%n", 
MixAll.ROCKETMQ_HOME_ENV);
-                System.exit(-2);
-            }
+        if (null == namesrvConfig.getRocketmqHome()) {
+            System.out.printf("Please set the %s variable in your environment 
to match the location of the RocketMQ installation%n", 
MixAll.ROCKETMQ_HOME_ENV);
+            System.exit(-2);
+        }
 
-            LoggerContext lc = (LoggerContext) 
LoggerFactory.getILoggerFactory();
-            JoranConfigurator configurator = new JoranConfigurator();
-            configurator.setContext(lc);
-            lc.reset();
-            configurator.doConfigure(namesrvConfig.getRocketmqHome() + 
"/conf/logback_namesrv.xml");
-            final InternalLogger log = 
InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
+        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
+        JoranConfigurator configurator = new JoranConfigurator();
+        configurator.setContext(lc);
+        lc.reset();
+        configurator.doConfigure(namesrvConfig.getRocketmqHome() + 
"/conf/logback_namesrv.xml");
 
-            MixAll.printObjectProperties(log, namesrvConfig);
-            MixAll.printObjectProperties(log, nettyServerConfig);
+        log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
 
-            final NamesrvController controller = new 
NamesrvController(namesrvConfig, nettyServerConfig);
+        MixAll.printObjectProperties(log, namesrvConfig);
+        MixAll.printObjectProperties(log, nettyServerConfig);
 
-            // remember all configs to prevent discard
-            controller.getConfiguration().registerConfig(properties);
+        final NamesrvController controller = new 
NamesrvController(namesrvConfig, nettyServerConfig);
 
-            boolean initResult = controller.initialize();
-            if (!initResult) {
-                controller.shutdown();
-                System.exit(-3);
-            }
+        // remember all configs to prevent discard
+        controller.getConfiguration().registerConfig(properties);
 
-            Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, 
new Callable<Void>() {
-                @Override
-                public Void call() throws Exception {
-                    controller.shutdown();
-                    return null;
-                }
-            }));
+        return controller;
+    }
 
-            controller.start();
+    public static NamesrvController start(final NamesrvController controller) 
throws Exception {
 
-            String tip = "The Name Server boot success. serializeType=" + 
RemotingCommand.getSerializeTypeConfigInThisServer();
-            log.info(tip);
-            System.out.printf("%s%n", tip);
+        if (null == controller) {
+            throw new IllegalArgumentException("NamesrvController is null");
+        }
 
-            return controller;
-        } catch (Throwable e) {
-            e.printStackTrace();
-            System.exit(-1);
+        boolean initResult = controller.initialize();
+        if (!initResult) {
+            controller.shutdown();
+            System.exit(-3);
         }
 
-        return null;
+        Runtime.getRuntime().addShutdownHook(new ShutdownHookThread(log, new 
Callable<Void>() {
+            @Override
+            public Void call() throws Exception {
+                controller.shutdown();
+                return null;
+            }
+        }));
+
+        controller.start();
+
+        return controller;
+    }
+
+    public static void shutdown(final NamesrvController controller) {
+        controller.shutdown();
     }
 
     public static Options buildCommandlineOptions(final Options options) {

-- 
To stop receiving notification emails like this one, please contact
lizhan...@apache.org.

Reply via email to