I’m trying to daemonize a java class that’s doing some mail routing and built 
jsvc for that purpose.  The source I used is from the commons-daemon-1.0.15-src 
downloaded from the Apache site, and I’m presuming that it’s good code.  I 
grabbed a Linux style start/stop script off the web and modified it for my path 
and class, etc (shown below).  When I run in debug, I can clearly tell that 
jsvc finds the commons daemon.  But, it can’t find my class included in 
eMailRouter.jar.  As far as I can tell, I have the path to the class correct 
and I tested it by calling from Java rather than jsvc using this command:

java -cp 
/usr/share/java/commons-daemon-1.0.15.jar:/home/rtanner/Java/Workspace/eMailRouter/eMailRouter.jar
 org.linfield.eMailRouter.RouterDaemon 

Since I added an otherwise unnecessary main method that simply prints out “I’m 
in main”, I was able to confirm that I had found and executed the class file.   
 My class implements Daemon and at this point really does nothing more (each of 
the required methods simply print out their name).  So is it possible that my 
problem could be the class itself rather than the start/stop script.  Would it 
help if I posted the Java source for the class?

Immediately below is the start/stop script:

#!/bin/sh

# Setup variables
EXEC=/usr/local/bin/jsvc
export JAVA_HOME=/usr/java/jdk1.7.0_55
export 
CLASS_PATH=/usr/share/java/commons-daemon-1.0.15.jar:/home/rtanner/Java/Workspace/eMailRouter/eMailRouter.jar
CLASS=org.linfield.eMailRouter.RouterDaemon
USER=root
PID=/tmp/example.pid
LOG_OUT=/tmp/example.out
LOG_ERR=/tmp/example.err

do_exec()
{
    $EXEC -debug -home $JAVA_HOME -cp $CLASS_PATH -user $USER -outfile $LOG_OUT 
-errfile $LOG_ERR -pidfile $PID $1 $CLASS
}

pwd
echo $CLASS_PATH
echo $JAVA_HOME

case "$1" in
    start)
        do_exec
            ;;
    stop)
        do_exec "-stop"
            ;;
    restart)
        if [ -f $PID ]; then
            do_exec "-stop"
            do_exec
        else
            echo "service not running, will do nothing"
            #exit 1
        fi
             ;;
    *)
            echo $"usage: daemon {start|stop|restart}" #>&2
              exit 3
            ##  ;;
esac
exit


Thanks.

~ Rob





Reply via email to