What is Ferris JMCE

JMCE stands for Java Main Class Executer. As the name implies, this application is able to execute the main(String [] args) method of a class.

Why create an application like this? Because this application can serve the same function as init.d does only for Java-based applications. I have found myself creating a number of simple Java-based services that I want running on my application server all the time. These services are very light-weight and spend most of their time sleeping so it is silly to have 10 JVM's running at the same time. It makes more sense to have just 1 JVM running and have all services executing in it. In addition, I want those services to start automatically when the server is restarted. So instead of creating init.d entries for every service I created, I instead created JMCE. This makes deploying Java-based services much easier. I setup init.d only one time to execute JMCE. Then JMCE takes care of executing any of the services that are in its deploy/ directory. Like Tomcat, each service in the deploy/ directory gets its own ClassLoader and any JAR files in ${JMCE_HOME}/common/lib/ are shared by all services in deploy/.