Documentation is on the glom wiki: http://www.glom.org/wiki/index.php?title=Development/OnlineGlom Notes: * When using java-libglom in a servlet and doing a programmatic restart of Jetty or Tomcat you will see this problem: java.lang.UnsatisfiedLinkError: Native Library /path/to/libjava_libglom-0.1.so.0.0.0 already loaded in another classloader The servlet will no longer respond to requests. Loading the native library in the servlet rather than java-libglom removes the error message but the servlet still doesn't work after a programmatic restart as tested with Jetty. I'm not sure what the exact problem is but I've found a reference to this being a shortcoming of using JNI in a servlet (see the comment by Tonio near the bottom): http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075039 The solution to this problem might be to check if the native library has already been loaded and only load it if it hasn't. As with moving the native code loading to the calling application (servlet, junit test and ExampleDocumentLoad), this may not solve the problem of the non-working servlet after a programmatic restart. Until this problem is solved, here's how the servlet should be deployed using tomcat6: * stop Tomcat: sudo /etc/init.d/tomcat6 stop * remove Tomcat cache: rm -r /var/cache/tomcat6/* * remove the old war and unpacked files sudo rm -r /var/lib/tomcat6/webapps/{OnlineGlom,OnlineGlom.war} * copy new war into the correct web directory sudo cp path/to/uploaded/OnlineGlom.war /var/lib/tomcat6/webapps/ * start Tomcat: sudo /etc/init.d/tomcat6 start Anybody using OnlineGlom will notice this restart as the servlet will be unresponsive during this time and the page will need to be refreshed by the user.