Title: Unix Daemon Apache TomEE can be run as a daemon using the [jsvc](http://commons.apache.org/daemon/jsvc.html) tool from the [Apache Commons Daemon](http://commons.apache.org/daemon) project. Source tarballs for `jsvc` are included with Tomcat and therefore can be found in TomEE as well. These need to be compiled before jsvc can be used. # Building jsvc First, we'll need to locate and unpack the `commons-daemon-native.tar.gz` cd $TOMEE_HOME/bin tar xzvf commons-daemon-native.tar.gz cd commons-daemon-1.0.7-native-src/unix/ Note that the `commons-daemon-1.0.7-native-src` directory may have a slightly different version number. Second, we'll need to build the `jsvc` binary. Under a UNIX operating system you will need: - An ANSI-C compliant compiler (GCC is good) - GNU Make - A Java Platform 2 compliant SDK You have to specify the `JAVA_HOME` of the SDK either with the `--with-java=` parameter or set the `JAVA_HOME` environment to point to your SDK installation. For example: ./configure --with-java=/usr/java or export JAVA_HOME ./configure If your operating system is supported, configure will go through cleanly, otherwise it will report an error (please send us the details of your OS/JDK, or a patch against the sources). To build the binaries and libraries simply do: make This will generate the executable file `jsvc`. Finally, we'll want to set the execution bits and move the `jsvc` binary chmod 755 jsvc mv jsvc $TOMEE_HOME/bin Done! As one script, the above might look like: cd $TOMEE_HOME/bin tar xzvf commons-daemon-native.tar.gz cd commons-daemon-1.0.7-native-src/unix/ ./configure make chmod 755 jsvc mv jsvc ../.. # Starting (unix) sudo "$TOMEE_HOME/bin/jsvc" -cp "$TOMEE_HOME/bin/bootstrap.jar:$TOMEE_HOME/bin/tomcat-juli.jar" \ "-javaagent:$TOMEE_HOME/lib/openejb-javaagent.jar" -outfile "$TOMEE_HOME/logs/catalina.out" \ -errfile "$TOMEE_HOME/logs/catalina.err" org.apache.catalina.startup.Bootstrap # Starting (osx) For a 64-bit JVM such as OSX Lion sudo arch -arch x86_64 "$TOMEE_HOME/bin/jsvc" -jvm server -cp "$TOMEE_HOME/bin/bootstrap.jar:$TOMEE_HOME/bin/tomcat-juli.jar" \ "-javaagent:$TOMEE_HOME/lib/openejb-javaagent.jar" -outfile "$TOMEE_HOME/logs/catalina.out" \ -errfile "$TOMEE_HOME/logs/catalina.err" org.apache.catalina.startup.Bootstrap For a 32-bit JVM sudo arch -arch i386 "$TOMEE_HOME/bin/jsvc" -jvm server -cp "$TOMEE_HOME/bin/bootstrap.jar:$TOMEE_HOME/bin/tomcat-juli.jar" \ "-javaagent:$TOMEE_HOME/lib/openejb-javaagent.jar" -outfile "$TOMEE_HOME/logs/catalina.out" \ -errfile "$TOMEE_HOME/logs/catalina.err" org.apache.catalina.startup.Bootstrap ## Note on formatting Note that `\` at the end of each line is unix syntax to keep everything effectively as one line and one command. The command is simply too long to show as one line on a fixed width html page. The `\` can be removed as long as the resulting command is one long line. # Common Issues Ensure your `$TOME_HOME` and `$JAVA_HOME` variables are set correctly. You should see similar output with the following two commands mingus:~ 01:51:37 $ ls $TOMEE_HOME LICENSE RELEASE-NOTES bin endorsed logs webapps NOTICE RUNNING.txt conf lib temp work mingus:~ 01:51:46 $ ls $JAVA_HOME bin bundle lib man The `jsvc -debug` option can also show useful information for troubleshooting: $TOMEE_HOME/bin/jsvc -debug Note on OSX, `$JAVA_HOME` should be set to `/System/Library/Frameworks/JavaVM.framework/Home` # Further documentation See also the full Apache Commons Daemon documentation for jsvc. - [http://commons.apache.org/daemon/jsvc.html](http://commons.apache.org/daemon/jsvc.html)