Note: tested on Ubuntu. Replace YOUR_APP_NAME with your application's name and ABSOLUTE_PATH_TO_YOUR_APP with absolute path to your application.
First go to /etc/init.d/ and create file YOUR_APP_NAME with this contents:
#!/bin/sh ### BEGIN INIT INFO # Provides: YOUR_APP_NAME # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Should-Start: $named # Should-Stop: $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start Tomcat YOUR_APP_NAME. # Description: Start the Tomcat YOUR_APP_NAME servlet engine. ### END INIT INFO SERVICE_NAME=YOUR_APP_NAME PATH_TO_JAR=/ABSOLUTE_PATH_TO_YOUR_APP/YOUR_APP_NAME.jar OPTS="-Xmx256m" PID_PATH_NAME=/tmp/YOUR_APP_NAME-pid case $1 in start) echo "Starting $SERVICE_NAME ..." if [ ! -f $PID_PATH_NAME ]; then nohup java -jar $OPTS $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null & echo $! > $PID_PATH_NAME echo "$SERVICE_NAME started ..." else echo "$SERVICE_NAME is already running ..." fi ;; stop) if [ -f $PID_PATH_NAME ]; then PID=$(cat $PID_PATH_NAME); echo "$SERVICE_NAME stoping ..." kill $PID; echo "$SERVICE_NAME stopped ..." rm $PID_PATH_NAME else echo "$SERVICE_NAME is not running ..." fi ;; restart) if [ -f $PID_PATH_NAME ]; then PID=$(cat $PID_PATH_NAME); echo "$SERVICE_NAME stopping ..."; kill $PID; echo "$SERVICE_NAME stopped ..."; rm $PID_PATH_NAME echo "$SERVICE_NAME starting ..." nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null & echo $! > $PID_PATH_NAME echo "$SERVICE_NAME started ..." else echo "$SERVICE_NAME is not running ..." fi ;; esac
Next just call:
update-rc.d YOUR_APP_NAME defaults
Made better & faster using https://www.yourkit.com/ Java Profiler