Echo changes
[aquarium] / scripts / aquarium.sh
index 0f56e63..f83ccd8 100755 (executable)
@@ -68,22 +68,30 @@ PRGDIR=`dirname "$PRG"`
 
 # Only set supported environment variables if not already set
 [ -z "$AQUARIUM_HOME" ] && AQUARIUM_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
-[ -z "$AQUARIUM_PROP" ] && AQUARIUM_PROP="-Dlog4j.debug=true"
+[ -z "$AQUARIUM_PROP" ] && AQUARIUM_PROP=""
 [ -z "$AQUARIUM_OPTS" ] && AQUARIUM_OPTS=""
 [ -z "$JAVA_OPTS" ]     && JAVA_OPTS="-Xms1024M -Xmx4096M"
 
+export AQUARIUM_HOME
 
-AQMAIN=gr.grnet.aquarium.Main
-PID=$AQUARIUM_HOME/bin/aquarium.pid
-LIB=$AQUARIUM_HOME/lib
-LOG=$AQUARIUM_HOME/logs/aquarium.log
-CONF=$AQUARIUM_HOME/conf
+PID_FILE=$AQUARIUM_HOME/bin/aquarium.pid
+
+AQUARIUM_LIB=$AQUARIUM_HOME/lib
+AQUARIUM_CONF=$AQUARIUM_HOME/conf
+AQUARIUM_LOGFILE=$AQUARIUM_HOME/logs/aquarium.log
+
+AQUARIUM_MAIN_CLASS=gr.grnet.aquarium.Main
+
+# We use jbootstrap to start the application.
+# No need to manually setup the CLASSPATH
+JBOOT_JAR=$AQUARIUM_LIB/jbootstrap-3.0.0.jar
+JBOOT_MAIN_CLASS=com.ckkloverdos.jbootstrap.Main
 
 # Check the application status
 check_status() {
-    if [ -f $PID ]
+    if [ -f $PID_FILE ]
     then
-        aqrunning=`ps -ef|grep java|grep aquarium`
+        aqrunning=`ps -ef|grep java|grep $AQUARIUM_MAIN_CLASS`
         if [ -z "$aqrunning" ]
         then
             return 0
@@ -110,21 +118,18 @@ start() {
 
     echo "Starting Aquarium"
 
-    # Build classpath
-    CLASSPATH=`find $LIB -type f|grep jar$|tr '\n' ':'|sed -e 's/\:$//'`
-    
-    # load log4j from classpath
-    CLASSPATH=$CONF:$CLASSPATH
-
-    echo "Using CLASSPATH $CLASSPATH"
-    echo "Using AQUARIUM_HOME $AQUARIUM_HOME"
-    echo "Using MAIN $AQMAIN"
-    echo "Using AQUARIUM_PROP $AQUARIUM_PROP"
-    echo "Using JAVA_OPTS $JAVA_OPTS"
-
-    java $JAVA_OPTS -cp $CLASSPATH $AQUARIUM_PROP $AQMAIN >> $LOG 2>&1 &
-    echo $! > $PID
-    echo "OK [pid = $!]"
+    CLASSPATH=$JBOOT_JAR
+
+    echo "Using CLASSPATH=$CLASSPATH"
+    echo "Using AQUARIUM_HOME=$AQUARIUM_HOME"
+    echo "Using AQUARIUM_MAIN_CLASS=$AQUARIUM_MAIN_CLASS"
+    echo "Using AQUARIUM_PROP=$AQUARIUM_PROP"
+    echo "Using JAVA_OPTS=$JAVA_OPTS"
+    echo "nohup java $JAVA_OPTS -cp $CLASSPATH $AQUARIUM_PROP $JBOOT_MAIN_CLASS -lib $AQUARIUM_LIB $AQUARIUM_MAIN_CLASS > $AQUARIUM_LOGFILE"
+
+    nohup java $JAVA_OPTS -cp $CLASSPATH $AQUARIUM_PROP $JBOOT_MAIN_CLASS -lib $AQUARIUM_LIB $AQUARIUM_MAIN_CLASS > $AQUARIUM_LOGFILE 2>&1 &
+    echo $! > $PID_FILE
+    echo "PID="`cat $PID_FILE`
 }
 
 # Stops the application
@@ -138,8 +143,8 @@ stop() {
 
     # Kills the application process
     echo -n "Stopping Aquarium: "
-    kill `cat $PID`
-    rm $PID
+    kill `cat $PID_FILE`
+    rm $PID_FILE
     echo "OK"
 }
 
@@ -148,35 +153,49 @@ status() {
     check_status
     if [ $? -ne 0 ]
     then
-        echo "Aquarium is running (pid=$pid)"
+        echo "Aquarium is running (pid="`cat $PID_FILE`")"
     else
         echo "Aquarium is stopped"
     fi
 }
 
+ps_aquarium() {
+  ps -ef | grep java | grep gr.grnet.aquarium.Main
+}
+
+forcekill() {
+  local PIDS=`ps_aquarium | awk '{print $2}'`
+  for pid in $PIDS; do
+    echo Killing $pid
+    kill -9 $pid
+  done
+}
+
 # Main logic, a simple case to call functions
 case "$1" in
-    start)
-        start
-        ;;
-    stop)
-        stop
-        ;;
-    status)
-        status
-        ;;
-    debug)
-        start "debug"
-        ;;
-    restart)
-        stop
-        start
-        ;;
-    *)
-        echo "Usage: $0 {start|stop|restart|status|debug}"
-        exit 1
-esac
-
+  start)
+    start
+    ;;
+  stop)
+    stop
+    ;;
+  status)
+    status
+    ;;
+  restart)
+    stop
+    start
+    ;;
+  ps)
+    ps_aquarium
+    ;;
+  forcekill)
+    forcekill
+    ;;
+  *)
+      echo "Usage: $0 {start|stop|restart|status|ps|forcekill}"
+      exit 1
+    esac
 exit 0
 
 # vim: set sta sts=4 shiftwidth=4 sw=4 et ai :