| @@ -1 +1 @@ | |||
| Subproject commit c770f544e9892b4cc2e937a336abf59a40fc198a | |||
| Subproject commit d55343ab297329f9476d7fa1494ebb4c9c5fd878 | |||
| @@ -15,45 +15,9 @@ public class GatewayBooter { | |||
| public static void main(String[] args) { | |||
| try { | |||
| writePID(); | |||
| GatewayServerBooter.main(args); | |||
| } catch (Exception e) { | |||
| System.err.println("Error!!! --[" + e.getClass().getName() + "] " + e.getMessage()); | |||
| } | |||
| } | |||
| private static final void writePID() throws Exception { | |||
| URL url = GatewayBooter.class.getProtectionDomain().getCodeSource().getLocation(); | |||
| String currPath = java.net.URLDecoder.decode(url.getPath(), "UTF-8"); | |||
| if (currPath.contains("!/")) { | |||
| currPath = currPath.substring(5, currPath.indexOf("!/")); | |||
| } | |||
| if (currPath.endsWith(".jar")) { | |||
| currPath = currPath.substring(0, currPath.lastIndexOf("/") + 1); | |||
| } | |||
| System.out.printf("currentPath = %s \r\n", currPath); | |||
| File file = new File(currPath); | |||
| String homeDir = file.getParent(); | |||
| String pidFilePath = homeDir + File.separator + "bin" + File.separator + "PID.log"; | |||
| File pidFile = new File(pidFilePath); | |||
| if (!pidFile.exists()) { | |||
| File dir = pidFile.getParentFile(); | |||
| if (!dir.exists()) { | |||
| dir.mkdirs(); | |||
| } | |||
| pidFile.createNewFile(); | |||
| } | |||
| String name = ManagementFactory.getRuntimeMXBean().getName(); | |||
| String pid = name.split("@")[0]; | |||
| List<String> bootInfos = new ArrayList<>(); | |||
| bootInfos.add("JDChain gateway starts to boot ......\r\n"); | |||
| bootInfos.add(String.format("GW_BOOT_TIME = [%s] \r\n", new Date().toString())); | |||
| bootInfos.add(String.format("GW_BOOT_PID = [%s] \r\n", pid)); | |||
| try (FileOutputStream outputStream = new FileOutputStream(pidFile)) { | |||
| for (String bootInfo : bootInfos) { | |||
| outputStream.write(bootInfo.getBytes(StandardCharsets.UTF_8)); | |||
| } | |||
| outputStream.flush(); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,32 +1,65 @@ | |||
| #!/bin/bash | |||
| #启动Home路径 | |||
| BOOT_HOME=$(cd `dirname $0`;cd ../; pwd) | |||
| #进程启动后PID.log所在路径 | |||
| PID_LOG=$BOOT_HOME/bin/PID.log | |||
| #从启动文件中读取PID | |||
| if [ -f "$PID_LOG" ]; then | |||
| # File exist | |||
| echo "Read PID From File:[$PID_LOG] ..." | |||
| PID_LINE=`sed -n '$p' $PID_LOG` | |||
| echo "Last Gateway Boot Info = $PID_LINE ..." | |||
| if [[ $PID_LINE == *GW_BOOT_PID* ]]; then | |||
| LOG_PID=$(echo $PID_LINE | cut -d "=" -f 2 | cut -d "[" -f 2 | cut -d "]" -f 1) | |||
| echo "Last Gateway Boot PID = $LOG_PID ..." | |||
| PID=`ps -ef | grep deploy-gateway- | grep $LOG_PID | grep -v grep | awk '{print $2}'` | |||
| #定义程序启动的Jar包前缀 | |||
| APP_JAR_PREFIX=deploy-gateway- | |||
| #获取当前的根目录 | |||
| APP_HOME=$(cd `dirname $0`;cd ../; pwd) | |||
| #System路径 | |||
| APP_LIB_PATH=$APP_HOME/lib | |||
| #获取Peer节点的启动Jar包 | |||
| APP_JAR=$(ls $APP_LIB_PATH | grep $APP_JAR_PREFIX) | |||
| #APP_JAR的具体路径 | |||
| APP_JAR_PATH=$APP_LIB_PATH/$APP_JAR | |||
| ################################### | |||
| #(函数)判断程序是否已启动 | |||
| # | |||
| #说明: | |||
| #使用awk,分割出pid ($1部分),及Java程序名称($2部分) | |||
| ################################### | |||
| #初始化psid变量(全局) | |||
| psid=0 | |||
| checkpid() { | |||
| psid=`ps -ef | grep $APP_JAR_PATH | grep -v grep | awk '{print $2}'` | |||
| } | |||
| ################################### | |||
| #(函数)停止程序 | |||
| # | |||
| #说明: | |||
| #1. 首先调用checkpid函数,刷新$psid全局变量 | |||
| #2. 如果程序已经启动($psid不等于0),则开始执行停止,否则,提示程序未运行 | |||
| #3. 使用kill -9 pid命令进行强制杀死进程 | |||
| #4. 执行kill命令行紧接其后,马上查看上一句命令的返回值: $? | |||
| #5. 如果步骤4的结果$?等于0,则打印[OK],否则打印[Failed] | |||
| #注意:echo -n 表示打印字符后,不换行 | |||
| #注意: 在shell编程中,"$?" 表示上一句命令或者一个函数的返回值 | |||
| ################################### | |||
| stop() { | |||
| checkpid | |||
| if [[ $psid -ne 0 ]]; then | |||
| echo "Stopping Gateway ......(pid=$psid) " | |||
| JAVA_CMD="kill -9 $psid" | |||
| sleep 1 | |||
| $JAVA_CMD | |||
| if [[ $? -eq 0 ]]; then | |||
| echo "[OK]" | |||
| else | |||
| echo "[Failed]" | |||
| fi | |||
| #启动文件不存在则直接通过PS进行过滤 | |||
| else | |||
| PID=`ps -ef | grep $BOOT_HOME/lib/deploy-gateway- | grep -v grep | awk '{print $2}'` | |||
| fi | |||
| #通过Kill命令将进程杀死 | |||
| if [ -z "$PID" ]; then | |||
| echo "Unable to find gateway PID. stop aborted." | |||
| else | |||
| echo "Start to kill PID = $PID ..." | |||
| kill -9 $PID | |||
| echo "Gateway has been stopped ..." | |||
| fi | |||
| else | |||
| echo "================================" | |||
| echo "WARN: Gateway is not running" | |||
| echo "================================" | |||
| fi | |||
| } | |||
| #真正停止的处理流程 | |||
| stop | |||
| @@ -1,19 +1,103 @@ | |||
| #!/bin/bash | |||
| HOME=$(cd `dirname $0`;cd ../; pwd) | |||
| GATEWAY=$(ls $HOME/lib | grep deploy-gateway-) | |||
| PROC_INFO=$HOME/lib/$GATEWAY" -c "$HOME/config/gateway.conf | |||
| #echo $PROC_INFO | |||
| #get PID | |||
| PID=`ps -ef | grep "$PROC_INFO" | grep -v grep | awk '{print $2}'` | |||
| #echo $PID | |||
| if [[ ! -z $PID ]] | |||
| then | |||
| echo "process already exists,please check... If necessary, you should kill the process first." | |||
| exit | |||
| #设置Java命令 | |||
| JAVA_BIN=java | |||
| #定义程序启动的Jar包前缀 | |||
| APP_JAR_PREFIX=deploy-gateway- | |||
| #检查Java环境变量 | |||
| if [ ! -n "$JAVA_HOME" ]; then | |||
| echo "UnFound environment variable[JAVA_HOME], will use command[java]..." | |||
| else | |||
| JAVA_BIN=$JAVA_HOME/bin/java | |||
| fi | |||
| if [ ! -n "$GATEWAY" ]; then | |||
| echo "GateWay Is Null !!!" | |||
| #获取当前的根目录 | |||
| APP_HOME=$(cd `dirname $0`;cd ../; pwd) | |||
| #Lib目录 | |||
| APP_LIB_PATH=$APP_HOME/lib | |||
| #节点输出日志路径 | |||
| LOG_OUT=$APP_HOME/bin/gw.out | |||
| #获取Peer节点的启动Jar包 | |||
| APP_JAR=$(ls $APP_LIB_PATH | grep $APP_JAR_PREFIX) | |||
| #Config配置路径 | |||
| CONFIG_PATH=$APP_HOME/config | |||
| #gateway.conf完整路径 | |||
| GATEWAY_CONFIG=$CONFIG_PATH/gateway.conf | |||
| #定义程序启动的参数 | |||
| JAVA_OPTS="-jar -server -Xms1024m -Xmx1024m" | |||
| #APP具体相关命令 | |||
| APP_CMD=$APP_LIB_PATH/$APP_JAR" -c "$GATEWAY_CONFIG | |||
| #APP_JAR的具体路径 | |||
| APP_JAR_PATH=$APP_LIB_PATH/$APP_JAR | |||
| #JAVA_CMD具体命令 | |||
| JAVA_CMD="$JAVA_BIN $JAVA_OPTS $APP_CMD" | |||
| ################################### | |||
| #(函数)判断程序是否已启动 | |||
| # | |||
| #说明: | |||
| #使用awk,分割出pid ($1部分),及Java程序名称($2部分) | |||
| ################################### | |||
| #初始化psid变量(全局) | |||
| psid=0 | |||
| checkpid() { | |||
| javaps=`ps -ef | grep $APP_JAR_PATH | grep -v grep | awk '{print $2}'` | |||
| if [[ -n "$javaps" ]]; then | |||
| psid=$javaps | |||
| else | |||
| psid=0 | |||
| fi | |||
| } | |||
| ################################### | |||
| #(函数)打印系统环境参数 | |||
| ################################### | |||
| info() { | |||
| echo "System Information:" | |||
| echo "****************************" | |||
| echo `uname -a` | |||
| echo | |||
| echo `$JAVA_BIN -version` | |||
| echo | |||
| echo "APP_HOME=$APP_HOME" | |||
| echo "APP_JAR=$APP_JAR" | |||
| echo "CONFIG_PATH=$CONFIG_PATH" | |||
| echo "APP_JAR_PATH=$APP_JAR_PATH" | |||
| echo | |||
| echo "JAVA_CMD=$JAVA_CMD" | |||
| echo "****************************" | |||
| } | |||
| #真正启动的处理流程 | |||
| checkpid | |||
| if [[ $psid -ne 0 ]]; then | |||
| echo "================================" | |||
| echo "warn: Gateway already started! (pid=$psid)" | |||
| echo "================================" | |||
| else | |||
| nohup java -jar -server -Djdchain.log=$HOME $PROC_INFO $* >$HOME/bin/gw.out 2>&1 & | |||
| echo "Starting Gateway ......" | |||
| nohup $JAVA_BIN $JAVA_OPTS $APP_CMD $* >$LOG_OUT 2>&1 & | |||
| JAVA_CMD="$JAVA_BIN $JAVA_OPTS $APP_CMD $*" | |||
| sleep 1 | |||
| checkpid | |||
| if [[ $psid -ne 0 ]]; then | |||
| echo "(pid=$psid) [OK]" | |||
| info | |||
| else | |||
| echo "[Failed]" | |||
| fi | |||
| fi | |||
| @@ -33,12 +33,8 @@ public class PeerBooter { | |||
| public static void main(String[] args) { | |||
| try { | |||
| HomeContext homeContext = HomeBooter.createHomeContext(args); | |||
| startPeer(homeContext); | |||
| writePID(homeContext.getHomeDir()); | |||
| } catch (Exception e) { | |||
| System.err.println("Error!!! --[" + e.getClass().getName() + "] " + e.getMessage()); | |||
| } | |||
| @@ -56,24 +52,4 @@ public class PeerBooter { | |||
| SYSTEM_MAIN_CLASS, home.getSystemClassLoader(), home.getStartingArgs() }; | |||
| modularFactoryMethod.invoke(null, systemStartingArgs); | |||
| } | |||
| private static final void writePID(String homeDir) throws IOException { | |||
| String pidFilePath = homeDir + File.separator + "bin" + File.separator + "PID.log"; | |||
| File pidFile = new File(pidFilePath); | |||
| if (!pidFile.exists()) { | |||
| pidFile.createNewFile(); | |||
| } | |||
| String name = ManagementFactory.getRuntimeMXBean().getName(); | |||
| String pid = name.split("@")[0]; | |||
| List<String> bootInfos = new ArrayList<>(); | |||
| bootInfos.add("JDChain peer node starts to boot ......\r\n"); | |||
| bootInfos.add(String.format("PEER_BOOT_TIME = [%s] \r\n", new Date().toString())); | |||
| bootInfos.add(String.format("PEER_BOOT_PID = [%s] \r\n", pid)); | |||
| try (FileOutputStream outputStream = new FileOutputStream(pidFile)) { | |||
| for (String bootInfo : bootInfos) { | |||
| outputStream.write(bootInfo.getBytes(StandardCharsets.UTF_8)); | |||
| } | |||
| outputStream.flush(); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,32 +1,65 @@ | |||
| #!/bin/bash | |||
| #启动Home路径 | |||
| BOOT_HOME=$(cd `dirname $0`;cd ../; pwd) | |||
| #进程启动后PID.log所在路径 | |||
| PID_LOG=$BOOT_HOME/bin/PID.log | |||
| #从启动文件中读取PID | |||
| if [ -f "$PID_LOG" ]; then | |||
| # File exist | |||
| echo "Read PID From File:[$PID_LOG] ..." | |||
| PID_LINE=`sed -n '$p' $PID_LOG` | |||
| echo "Last Peer Boot Info = $PID_LINE ..." | |||
| if [[ $PID_LINE == *PEER_BOOT_PID* ]]; then | |||
| LOG_PID=$(echo $PID_LINE | cut -d "=" -f 2 | cut -d "[" -f 2 | cut -d "]" -f 1) | |||
| echo "Last Peer Boot PID = $LOG_PID ..." | |||
| PID=`ps -ef | grep deploy-peer- | grep $LOG_PID | grep -v grep | awk '{print $2}'` | |||
| #定义程序启动的Jar包前缀 | |||
| APP_JAR_PREFIX=deploy-peer- | |||
| #获取当前的根目录 | |||
| APP_HOME=$(cd `dirname $0`;cd ../; pwd) | |||
| #System路径 | |||
| APP_SYSTEM_PATH=$APP_HOME/system | |||
| #获取Peer节点的启动Jar包 | |||
| APP_JAR=$(ls $APP_SYSTEM_PATH | grep $APP_JAR_PREFIX) | |||
| #APP_JAR的具体路径 | |||
| APP_JAR_PATH=$APP_SYSTEM_PATH/$APP_JAR | |||
| ################################### | |||
| #(函数)判断程序是否已启动 | |||
| # | |||
| #说明: | |||
| #使用awk,分割出pid ($1部分),及Java程序名称($2部分) | |||
| ################################### | |||
| #初始化psid变量(全局) | |||
| psid=0 | |||
| checkpid() { | |||
| psid=`ps -ef | grep $APP_JAR_PATH | grep -v grep | awk '{print $2}'` | |||
| } | |||
| ################################### | |||
| #(函数)停止程序 | |||
| # | |||
| #说明: | |||
| #1. 首先调用checkpid函数,刷新$psid全局变量 | |||
| #2. 如果程序已经启动($psid不等于0),则开始执行停止,否则,提示程序未运行 | |||
| #3. 使用kill -9 pid命令进行强制杀死进程 | |||
| #4. 执行kill命令行紧接其后,马上查看上一句命令的返回值: $? | |||
| #5. 如果步骤4的结果$?等于0,则打印[OK],否则打印[Failed] | |||
| #注意:echo -n 表示打印字符后,不换行 | |||
| #注意: 在shell编程中,"$?" 表示上一句命令或者一个函数的返回值 | |||
| ################################### | |||
| stop() { | |||
| checkpid | |||
| if [[ $psid -ne 0 ]]; then | |||
| echo "Stopping Peer ......(pid=$psid) " | |||
| JAVA_CMD="kill -9 $psid" | |||
| sleep 1 | |||
| $JAVA_CMD | |||
| if [[ $? -eq 0 ]]; then | |||
| echo "[OK]" | |||
| else | |||
| echo "[Failed]" | |||
| fi | |||
| #启动文件不存在则直接通过PS进行过滤 | |||
| else | |||
| PID=`ps -ef | grep $BOOT_HOME/system/deploy-peer- | grep -v grep | awk '{print $2}'` | |||
| fi | |||
| #通过Kill命令将进程杀死 | |||
| if [ -z "$PID" ]; then | |||
| echo "Unable to find peer PID. stop aborted." | |||
| else | |||
| echo "Start to kill PID = $PID ..." | |||
| kill -9 $PID | |||
| echo "Peer has been stopped ..." | |||
| fi | |||
| else | |||
| echo "================================" | |||
| echo "WARN: Peer is not running" | |||
| echo "================================" | |||
| fi | |||
| } | |||
| #真正停止的处理流程 | |||
| stop | |||
| @@ -1,19 +1,107 @@ | |||
| #!/bin/bash | |||
| HOME=$(cd `dirname $0`;cd ../; pwd) | |||
| PEER=$(ls $HOME/system | grep deploy-peer-) | |||
| PROC_INFO=$HOME/system/$PEER" -home="$HOME" -c "$HOME/config/ledger-binding.conf" -p 7080" | |||
| #echo $PROC_INFO | |||
| #get PID | |||
| PID=`ps -ef | grep "$PROC_INFO" | grep -v grep | awk '{print $2}'` | |||
| #echo $PID | |||
| if [[ ! -z $PID ]] | |||
| then | |||
| echo "process already exists,please check... If necessary, you should kill the process first." | |||
| exit | |||
| #设置Java命令 | |||
| JAVA_BIN=java | |||
| #定义程序启动的Jar包前缀 | |||
| APP_JAR_PREFIX=deploy-peer- | |||
| #Peer节点Web端口 | |||
| #请运维根据实际环境进行调整 | |||
| WEB_PORT=7080 | |||
| #检查Java环境变量 | |||
| if [ ! -n "$JAVA_HOME" ]; then | |||
| echo "UnFound environment variable[JAVA_HOME], will use command[java]..." | |||
| else | |||
| JAVA_BIN=$JAVA_HOME/bin/java | |||
| fi | |||
| if [ ! -n "$PEER" ]; then | |||
| echo "Peer Is Null !!!" | |||
| #获取当前的根目录 | |||
| APP_HOME=$(cd `dirname $0`;cd ../; pwd) | |||
| #System目录 | |||
| APP_SYSTEM_PATH=$APP_HOME/system | |||
| #节点输出日志路径 | |||
| LOG_OUT=$APP_HOME/bin/peer.out | |||
| #获取Peer节点的启动Jar包 | |||
| APP_JAR=$(ls $APP_SYSTEM_PATH | grep $APP_JAR_PREFIX) | |||
| #Config配置路径 | |||
| CONFIG_PATH=$APP_HOME/config | |||
| #ledger-binding.conf完整路径 | |||
| LEDGER_BINDING_CONFIG=$CONFIG_PATH/ledger-binding.conf | |||
| #定义程序启动的参数 | |||
| JAVA_OPTS="-jar -server -Xms2048m -Xmx2048m" | |||
| #APP具体相关命令 | |||
| APP_CMD=$APP_SYSTEM_PATH/$APP_JAR" -home="$APP_HOME" -c "$LEDGER_BINDING_CONFIG" -p "$WEB_PORT | |||
| #APP_JAR的具体路径 | |||
| APP_JAR_PATH=$APP_SYSTEM_PATH/$APP_JAR | |||
| #JAVA_CMD具体命令 | |||
| JAVA_CMD="$JAVA_BIN $JAVA_OPTS $APP_CMD" | |||
| ################################### | |||
| #(函数)判断程序是否已启动 | |||
| # | |||
| #说明: | |||
| #使用awk,分割出pid ($1部分),及Java程序名称($2部分) | |||
| ################################### | |||
| #初始化psid变量(全局) | |||
| psid=0 | |||
| checkpid() { | |||
| javaps=`ps -ef | grep $APP_JAR_PATH | grep -v grep | awk '{print $2}'` | |||
| if [[ -n "$javaps" ]]; then | |||
| psid=$javaps | |||
| else | |||
| psid=0 | |||
| fi | |||
| } | |||
| ################################### | |||
| #(函数)打印系统环境参数 | |||
| ################################### | |||
| info() { | |||
| echo "System Information:" | |||
| echo "****************************" | |||
| echo `uname -a` | |||
| echo | |||
| echo `$JAVA_BIN -version` | |||
| echo | |||
| echo "APP_HOME=$APP_HOME" | |||
| echo "APP_JAR=$APP_JAR" | |||
| echo "CONFIG_PATH=$CONFIG_PATH" | |||
| echo "APP_JAR_PATH=$APP_JAR_PATH" | |||
| echo | |||
| echo "JAVA_CMD=$JAVA_CMD" | |||
| echo "****************************" | |||
| } | |||
| #真正启动的处理流程 | |||
| checkpid | |||
| if [[ $psid -ne 0 ]]; then | |||
| echo "================================" | |||
| echo "warn: Peer already started! (pid=$psid)" | |||
| echo "================================" | |||
| else | |||
| nohup java -jar -server -Xmx1g -Xms1g -Djdchain.log=$HOME $PROC_INFO $* >$HOME/bin/peer.out 2>&1 & | |||
| echo "Starting Peer ......" | |||
| nohup $JAVA_BIN $JAVA_OPTS $APP_CMD $* >$LOG_OUT 2>&1 & | |||
| JAVA_CMD="$JAVA_BIN $JAVA_OPTS $APP_CMD $*" | |||
| sleep 1 | |||
| checkpid | |||
| if [[ $psid -ne 0 ]]; then | |||
| echo "(pid=$psid) [OK]" | |||
| info | |||
| else | |||
| echo "[Failed]" | |||
| fi | |||
| fi | |||
| @@ -1 +1 @@ | |||
| Subproject commit 2f8f48435e65d4f6598b1ede9c6a7021b10d2a53 | |||
| Subproject commit 3ffc3324c9fe20307cc36c07c361daa1f5d3f11e | |||
| @@ -1 +1 @@ | |||
| Subproject commit f2660860f71850b4e70ae529fbdb8320623bcaff | |||
| Subproject commit 722663f988affc77cc5aec502da455afb3f7eec5 | |||