一般来说,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??
<appender name="APP-LOG-FILE" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${log.dir.path}/xxx.log" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d - %c -%-4r [%t] %-5p %x - %m%n" /> </layout> </appender>
<pre name="code" class="html"><logger name="app-log" additivity="false"> <level value="${log.level}" /> <appender-ref ref="APP-LOG-FILE" /> </logger>
这样的话,当你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容器等等