一般来说,JAVA项目最终上线都是以JAR或者WAR的形式发布
WAR的话就是WEB工程,JAR的话就是普通JAVA工程,可以直接启动,无需任何容器的
一般比较的固定的目录结构:
项目名称demo
demo/bin这里一般是启动和停止脚本 start.sh stop.sh
demo/conf 系统配置文件
demo/base war工程的话,将war包放此
demo/***
demo/lib war工程的话,不需要,因为war工程通过mvn构建,引用的jar包都会打在war包里,如果是jar工程的话,需要此目录存放你的jar包(如果也通过mvn打在一起也可以,多的话)
demo/logs 这是必须的,存放log的位置
如何配置log??
这样的话,当你JAVA类里get以上的logger name就可以将log写到demo-log文件里了
重点分析下demo/bin目录下脚本编写:
env.sh
export JAVA_HOME=/usr/*/jdk
export NGINX_HOME=/usr/*/nginx
export JETTY_HOME=/usr/*/jetty
export JETTY_PORT=******
export APP_INSTALL_HOME=****
export APP_LOG_DIR_PATH=****
export LANG=zh_CN.UTF-8
start.sh
source ./env.sh
JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -Dcom.sun.management.jmxremote.port=7788 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false "
JAVA_OPTS=" -server -Xmx512m -Xms512m -Xss256K -XX:PermSize=128M -XX:MaxPermSize=128M -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCompressedOops -XX:CMSInitiatingOccupancyFraction=70 -XX:+HeapDumpOnOutOfMemoryError -XX:SurvivorRatio=8 "
JAVA_OPTS=${JAVA_OPTS}" *** -Dlog_path="${LOG_PATH}
$SYS_ECHO "starting......,please wait ..."
${JAVA_HOME}/bin/java ${JAVA_DEBUG_OPTS} ${JAVA_OPTS} -jar ${APP_PATH}/*.jar
******
stop.sh
pids=`${JAVA_HOME}/bin/jps | grep **|awk '{print $1}'`
for pid in $pids
do
kill -9 $pid
done
}
循环将启动的该**进程全部杀死,即停止
如果是war包工程的话
ps -ef | grep 容器 | awk '{pring $1}'
有tomcat容器,jetty容器等等