欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解spring boot 以jar的方式啟動常用shell腳本

 更新時(shí)間:2017年09月19日 11:18:49   作者:矮子爬樓梯  
本篇文章主要介紹了詳解spring boot 以jar的方式啟動常用shell腳本,具有一定的參考價(jià)值,有興趣的可以了解一下

用spring boot框架做的項(xiàng)目,將第三方包全部打在jar里面,通過shell腳本啟動和停止服務(wù),常用的shell腳本模板如下:

#!/bin/bash
JAVA_OPTIONS_INITIAL=-Xms128M
JAVA_OPTIONS_MAX=-Xmx512M
_JAR_KEYWORDS=monitor-alarm-task-1.0-SNAPSHOT.jar
APP_NAME=monitor-alarm-task
APPLICATION_FILE=/opt/scpip_monitor/application.properties
PID=$(ps aux | grep ${_JAR_KEYWORDS} | grep -v grep | awk '{print $2}' )
ALARM_CONFIG_FILE=`pwd`/alarmConfig.yaml


function check_if_process_is_running {
 if [ "$PID" = "" ]; then
 return 1
 fi
 ps -p $PID | grep "java"
 return $?
}



case "$1" in
 status)
 if check_if_process_is_running
 then
 echo -e "\033[32m $APP_NAME is running \033[0m"
 else
 echo -e "\033[32m $APP_NAME not running \033[0m"
 fi
 ;;
 stop)
 if ! check_if_process_is_running
 then
 echo -e "\033[32m $APP_NAME already stopped \033[0m"
 exit 0
 fi
 kill -9 $PID
 echo -e "\033[32m Waiting for process to stop \033[0m"
 NOT_KILLED=1
 for i in {1..20}; do
 if check_if_process_is_running
 then
 echo -ne "\033[32m . \033[0m"
 sleep 1
 else
 NOT_KILLED=0
 fi
 done
 echo
 if [ $NOT_KILLED = 1 ]
 then
 echo -e "\033[32m Cannot kill process \033[0m"
 exit 1
 fi
 echo -e "\033[32m $APP_NAME already stopped \033[0m"
 ;;
 start)
 if [ "$PID" != "" ] && check_if_process_is_running
 then
 echo -e "\033[32m $APP_NAME already running \033[0m"
 exit 1
 fi
 nohup java -jar -Dalarm.config.file=$ALARM_CONFIG_FILE $JAVA_OPTIONS_INITIAL $JAVA_OPTIONS_MAX $_JAR_KEYWORDS --spring.config.location=$APPLICATION_FILE > /dev/null 2>&1 & 
 echo -ne "\033[32m Starting \033[0m" 
 for i in {1..20}; do
 echo -ne "\033[32m.\033[0m"
 sleep 1
 done
 if check_if_process_is_running 
 then
 echo -e "\033[32m $APP_NAME fail \033[0m"
 else
 echo -e "\033[32m $APP_NAME started \033[0m"
 fi
 ;;
 restart)
 $0 stop
 if [ $? = 1 ]
 then
 exit 1
 fi
 $0 start
 ;;
 *)
 echo "Usage: $0 {start|stop|restart|status}"
 exit 1
esac


exit 0

正真啟動的命令:

復(fù)制代碼 代碼如下:

nohup java -jar -Dalarm.config.file=$ALARM_CONFIG_FILE $JAVA_OPTIONS_INITIAL $JAVA_OPTIONS_MAX $_JAR_KEYWORDS --spring.config.location=$APPLICATION_FILE > /dev/null 2>&1 &

其中-Dalarm.config.file 指定了外部配置文件的路徑,在service初始化中通過這個(gè)路徑讀取外部配置文件,然后解析成對象,如下:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.yaml.snakeyaml.Yaml;

import scpip.monitor.task.obj.MetricObj;

@Service
public class AlarmConfigService {
  private final Logger logger = LoggerFactory.getLogger(this.getClass());
  private Map<String,MetricObj> metricMap;
  public AlarmConfigService (){
    metricMap = new HashMap<String,MetricObj>();
    init();
  }
  
  private void init(){
    
    BufferedReader buffer;
    try {
      
      InputStream cpResource = new FileInputStream(getAlarmConfigFile());
      buffer = new BufferedReader(new InputStreamReader(cpResource,"utf-8"));
      Yaml yaml = new Yaml();
      //Map<String, List<Map<String,String>>> object = (Map<String, List<Map<String,String>>>) yaml.load(getAlarmConfigFile());
      Map<String, List<Map<String,String>>> object = (Map<String, List<Map<String,String>>>) yaml.load(buffer);
      logger.info("object==" + object);
      parseConfigMap(object);
    } catch (Exception e) {
      e.printStackTrace();
    }
    
  }

  public Map<String, MetricObj> getMetricMap() {
    return metricMap;
  }

  //{metricName=當(dāng)前響應(yīng)時(shí)間, alarmValue=10,20,40, columnName=response_time}, 
  private void parseConfigMap(Map<String,List<Map<String,String>>> object){
    MetricObj obj = null;
    for (String key : object.keySet()) {
      List<Map<String,String>> values = object.get(key);
      for(Map<String,String> map : values){
        obj = new MetricObj();
        String metricName = map.get("metricName");
        obj.setAlarmValue(map.get("alarmValue"));
        obj.setColumnName(map.get("columnName"));
        obj.setTableName(map.get("tableName"));
        obj.setMetricName(metricName);
        metricMap.put(metricName,obj);
       }
    }
  }
  
  private static String getAlarmConfigFile() {
      return System.getProperty("alarm.config.file");
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 論Java Web應(yīng)用中調(diào)優(yōu)線程池的重要性

    論Java Web應(yīng)用中調(diào)優(yōu)線程池的重要性

    這篇文章主要論述Java Web應(yīng)用中調(diào)優(yōu)線程池的重要性,通過了解應(yīng)用的需求,組合最大線程數(shù)和平均響應(yīng)時(shí)間,得出一個(gè)合適的線程池配置
    2016-04-04
  • 關(guān)于idea一直卡在build不動的解決方案

    關(guān)于idea一直卡在build不動的解決方案

    這篇文章主要介紹了idea一直卡在build不動的解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 淺談java String.split丟失結(jié)尾空字符串的問題

    淺談java String.split丟失結(jié)尾空字符串的問題

    下面小編就為大家?guī)硪黄獪\談java String.split丟失結(jié)尾空字符串的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java Exchanger并發(fā)類使用方法

    Java Exchanger并發(fā)類使用方法

    這篇文章主要介紹了Java Exchanger并發(fā)類使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java emoji持久化mysql過程詳解

    Java emoji持久化mysql過程詳解

    這篇文章主要介紹了Java emoji持久化mysql過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • java實(shí)現(xiàn)在一張大圖片上添加小圖及文字

    java實(shí)現(xiàn)在一張大圖片上添加小圖及文字

    這篇文章主要介紹了java實(shí)現(xiàn)在一張大圖上添加小圖及文字,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring?@Cacheable注解類內(nèi)部調(diào)用失效的解決方案

    Spring?@Cacheable注解類內(nèi)部調(diào)用失效的解決方案

    這篇文章主要介紹了Spring?@Cacheable注解類內(nèi)部調(diào)用失效的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • IntelliJ IDEA(2020.2)的下載、安裝步驟詳細(xì)教程

    IntelliJ IDEA(2020.2)的下載、安裝步驟詳細(xì)教程

    這篇文章主要介紹了IntelliJ IDEA(2020.2)的下載、安裝步驟詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • springboot獲取真實(shí)ip地址的方法實(shí)例

    springboot獲取真實(shí)ip地址的方法實(shí)例

    在使用springboot時(shí),需要獲取訪問客戶端的IP地址,所以下面這篇文章主要給大家介紹了關(guān)于springboot獲取真實(shí)ip地址的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 詳解Java多線程tryLock()方法使用

    詳解Java多線程tryLock()方法使用

    本文主要介紹了Java多線程tryLock()方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10

最新評論