java 项目在linux服务器上用shell脚本启动的配置文件加载

时间:2024-03-16 18:34:59

1.简单的jar包在linux上跑使用java -jar 命令执行。但通常这不满足项目需要。尤其是配置文件修改。

2.项目结构。一般是lib文件夹,config文件夹,logs文件夹。将config中的配置文件需要加载到项目的classpath中。使用shell脚本会非常方便。

3.jar包方面。通常会有一个程序的jia,包含主方法的,以及其它依赖jar。都知道需要将其它jia引入到classpath中,使用到一个MANIFEST.MF的文件。我项目使用的是idea开发,使用maven编辑,pom.xml中配置build。就可以实现。

<build>
    <plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
    <archive>
        <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>com.csr.receive.main.StartUp</mainClass>
        </manifest>
    </archive>
</configuration>
</plugin></plugins>
</build>

4.编译后,使用java -jar 命令能执行了,反编译后可以看到,jia里包括了配置文件。我们平时修改配置就非常不方便。如图:

java 项目在linux服务器上用shell脚本启动的配置文件加载

5.将配置文件单独出来放在项目外的config目录下,编写shell脚本实现,过程折腾了很长时间,直接贴上脚本了。文件名为.sh结尾。放在项目名称下的目录。启动那边将./config,./lib 目录下都放进了classpath。其他配置项目名称APP_HOME,和source路劲了。主方法和项目jar包对应修改下即可用。

#! /bin/sh
source /home/csr/.bash_profile
pid_file='server.pid'
APP_HOME='/home/csr/csr-server'
start()
{
        >$APP_HOME/logs/day.log
    echo $"Starting main server ......"
        nohup java  -server -Xms50m -Xmx512m -XX:+UseParNewGC -cp ./config:./lib/csr-receive-1.0-SNAPSHOT.jar com.csr.receive.main.StartUp >$APP_HOME/logs/day.log 2>&1 &
        echo $! > $pid_file
        echo $"main server started!"
}

stop()
{
        echo $"Stopping main server ......"
        pid=`cat $pid_file`
        kill -9 $pid
        echo "stop "$pid
        mv logs/day.log logs/day.log.bak_`date +%m%d%H%M`
        sleep 1
}

restart()

{
    >$APP_HOME/logs/day.log
        stop
        sleep 3
        start
}

case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
restart)
        restart
        ;;
*)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac