Running Java app using Supervisor

Running Supervisor with Java.
The problem when using Java inside a shell script, it doesn’t kill the Java process.

/etc/supervisor.conf 
...
[program:jserver]
command=/home/mahjongpal/jserver-fb/jserver.py
process_name=%(program_name)s
directory=/home/mahjongpal/jserver-fb/
startsecs=10
stderr_logfile=/var/log/supervisor/jserver_err.log
stdout_logfile=/var/log/supervisor/jserver_out.log
autorestart=true
stopsignal=KILL
user=mahjongpal

[program:policy]
command=/home/mahjongpal/jserver-fb/policy.py
process_name=%(program_name)s
directory=/home/mahjongpal/jserver-fb/
startsecs=10
stderr_logfile=/var/log/supervisor/policy_err.log
stdout_logfile=/var/log/supervisor/policy_out.log
autorestart=true
stopsignal=KILL

Here’s the borrowed code from http://lists.supervisord.org/pipermail/supervisor-users/2011-May/000904.html

Modified to work with a Java game engine:

/home/mahjongpal/jserver-fb/jserver.py 

#!/usr/bin/env python
# Filename: jserver.py 
# Desc: wrapper script to run via supervisor
#
 
import glob
import os
import sys
run_mode = os.getenv('RUN_MODE')
jvm_args = os.getenv('JVM_ARGS')
classpath = ':'.join(glob.glob('lib/*'))
cmd = []
cmd.append('java -Xms64m -Xmx512m -cp %s:. MessageRouter mahjong.cfg' % classpath) 
if jvm_args:
  cmd.append(jvm_args)
cmd.append(' '.join(sys.argv[1:]))
cmd = ' '.join(cmd).split()
cmd.insert(1, os.path.basename(sys.argv[0]))
os.execvp(cmd[0], cmd[1:])

Now Supervisor can start and stop with all Java programs killed.

1 thought on “Running Java app using Supervisor

  1. Tim

    epic – works perfectly for wowza, thanks for sharing – use the following:

    cmd.append(‘java -server -Xmx4000M -Xms4000M -Xmn2000M -Djava.net.preferIPv4Stack=true -XX:+UseParallelGC -XX:ParallelGCThreads=20 -Dcom.sun.management.jmxremote=true -Dcom.wowza.wms.runmode=service -Dcom.wowza.wms.native.base=linux -Dcom.wowza.wms.AppHome=/usr/local/WowzaMediaServer -Dcom.wowza.wms.ConfigURL= -Dcom.wowza.wms.ConfigHome=/usr/local/WowzaMediaServer -cp /usr/local/WowzaMediaServer/bin/wms-bootstrap.jar com.wowza.wms.bootstrap.Bootstrap start’)

Leave a Reply

Your email address will not be published. Required fields are marked *