Based on mail of Konstantin Piroumian at email@example.com.
Originally by Vadim Gritsenko's suggestions. -- KP
To avoid restarting the VM (the servlet container) you should do the following:
Use a container that supports hot deploy or so (I've used Tomcat 4.0.4 and 4.1). You can use it for development only and then deploy your application to a production server.
Configure your servlet container to load application located in <cocoon-home>/build/cocoon/webapp In case of Tomcat you should add a context in <tomcat-home>/conf/server.xml pointing to that location, e.g.:
<Context path="/cocoon" docBase="C:\xml-cocoon2\build\cocoon\webapp" debug="0" reloadable="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_cocoon_log." timestamp="true" suffix=".txt"/> <Resources className="org.apache.naming.resources.FileDirContext" allowLinking="true"/> </Context>
<Logger/> is for creating another log file for Cocoon specific log messages.
<Resources/> is only needed, if your webapp directory contains symbolic links or the docbase itself is a symbolic link.
At last build Cocoon using build.[bat|sh] -Dinclude.webapp.libs=true webapp-local This will build Cocoon and will place all classes in WEB-INF/classes so Tomcat could track changes.
Now you can compile your classes using build.[bat|sh] webapp-local and Tomcat will reload the application as soon as modifications are detected (it requires about a 1 minute).
Your webapp must not be deployed within the webapps Directory if you use this approach. Otherwise your cocoon app would be started twice!