Hi, I have written a task that does the following : - call a specified target in another thread. This other target should start your server (web server or servlet engine) using the java task for example and should be blocking (otherwise, there is no need for the current task !), - wait until that server is started by trying to connect to it using a specified URL
The format of this task is as follows : <startserver startTarget="name of target that starts the server" testURL="url to test"/> It is very useful for example to help start servlet engine, run J2EEUnit (http://j2eeunit.sourceforge.net and http://sourceforge.net/projects/j2eeunit for the developer site) tests and stop the running servlet engine. Here is an example : <!-- Run Tomcat 3.2 tests --> <target name="tests_tomcat_32" depends="prepare_tests_tomcat_32"> <!-- Start the Tomcat server in another thread and waits until it is --> <!-- --> <startserver testURL="http://localhost:8080" startTarget="start_tomcat_32"/> <!-- Start the JUnit test runner --> <antcall target="tests"/> <!-- Stop the Tomcat server --> <antcall target="stop_tomcat_32"/> </target> With the following targets : - prepare_tests_tomcat_32 : prepares the directory for testing with tomcat : make war file, copy it, copy tomcat config files, ... - start_tomcat_32 : target that uses the java task to start Tomcat - stop_tomcat_32 : target that uses the java task to stop Tomcat For a full Ant build script that uses this, check http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi/j2eeunit/build/build.xml?rev=1 .17&content-type=text/x-cvsweb-markup&cvsroot=j2eeunit I include in this mail the java code for the Start Server task. Note : I have not finalized the StopServer task as it does not seem to work very well. The idea was to force a servlet engine to stop if it did not provide any way to stop itself (for example Resin - It may exist but I have not found how to do it yet). However, I use the stop() method to kill the thread but it does not seem to stop the running servlet engine. However maybe we don"t need a Stop Server task for the moment. In that case, I'll remove the ThreadManager class which was just used as a placeholder for storing a reference to the thread so that the stop server task could call the stop() method on that thread. Do you think this Start Server task should be part of the optional Ant tasks ? (for the moment I deliver it as part of the J2EEUnit jar). Thanks a lot. Vincent Massol J2EEUnit author.
ThreadManager.java
Description: JavaScript source
StopServerTask.java
Description: JavaScript source
StartServerTask.java
Description: JavaScript source
